resolved conflicts for merge of 7044ee16 to mnc-preview-docs

Change-Id: Ia0d831660d7744f34c68dba62e19a11c83ec2ee7
diff --git a/Android.mk b/Android.mk
index 449ae1b..184392a 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1010,7 +1010,7 @@
 		-hdf android.hasSamples true \
 		-samplesdir $(samples_dir)
 
-LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:=build/tools/droiddoc/templates-ndk
+LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:=build/tools/droiddoc/templates-sdk
 
 include $(BUILD_DROIDDOC)
 
diff --git a/docs/html-ndk/ndk/guides/guides_toc.cs b/docs/html-ndk/ndk/guides/guides_toc.cs
index 3763c53..90eaea4 100644
--- a/docs/html-ndk/ndk/guides/guides_toc.cs
+++ b/docs/html-ndk/ndk/guides/guides_toc.cs
@@ -6,7 +6,6 @@
        localized titles are added in the language order specified below.
 ?>
 
-
 <ul id="nav">
 <li><strong>NDK</strong>
    <ul>
@@ -67,6 +66,7 @@
       <li><a href="">Another Stublet</a></li>
       </ul></li>
    </ul></li>
+
 </ul>
 
 
diff --git a/docs/html-ndk/ndk/index.jd b/docs/html-ndk/ndk/index.jd
index f1c5ce6..6723ed7 100644
--- a/docs/html-ndk/ndk/index.jd
+++ b/docs/html-ndk/ndk/index.jd
@@ -1,15 +1,68 @@
+page.title=Android NDK
+page.tags="ndk, native, c, c++", 
+meta.tags="ndk, native, c++"
 fullpage=true
-page.viewport_width=970
-excludeFromSuggestions=true
-page.metaDescription=The official Android NDK developer web site.
-page.customHeadTag=<meta name="google-site-verification" content="sa-bIAI6GKvct3f61-WpRguHq-aNjtF7xJjMTSi79as" />
-
+section.landing=true
+header.hide=1
+footer.hide=1
 @jd:body
 
+<section class="dac-expand dac-hero dac-dark dac-invert" style="background-repeat:no-repeat;">
+  <div class="wrap">
+    <div class="cols dac-hero-content" style="margin-top:32px">
+      <div class="col-7of16 cdol-push-1of16">
+        <h1 class="dac-hero-title">Android NDK</h1>
+        <p class="dac-hero-description">
+        The Android NDK is a toolset that lets you implement parts of your app using native code languages such as C and C++. For certain types of apps, this can help you reuse existing code libraries written in those languages.
+        </p>
 
-<h1>SUPER FANCY NDK LANDING PAGE<h1>
+        <a class="dac-hero-cta" href="/ndk/guides/index.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Get Started
+        </a><br>
+      </div>
+      <div class="col-8of16 col-push-1of16" style="margin-top:48px">
 
-<p>Welcome to the placeholder text for the NDK. Here, you'll find all of the details you need to
-combine the power of native code with Android flexibility and compatibility. The documents here
-help you get started, introduce some key concepts that you should know when using the NDK, and then
-provide a variety of other information that you'll find helpful while developing your app.</p>
+        <span style="color:#00e5ff;font-family:'Roboto Mono', monospace;font-weight:400">public class <span
+        style="color:#eee">MyActivity</span> extends Activity {<br>
+              <span style="color:#ccc">&nbsp;&nbsp;/**<br>
+                &nbsp;&nbsp;* Native method implemented in C/C++<br>
+                &nbsp;&nbsp;*/</span><br>
+                &nbsp;&nbsp;public <span style="color:#1DE9B6;font-weight:700">native</span> void <span style="color:#eee">computerFoo()</span>;<br>
+              }</span>
+      </div>
+    </div>
+  </div>
+</section>
+
+<div class="wrap dac-offset-parent">
+  <a class="dac-fab dac-scroll-button" data-scroll-button href="#latest">
+    <i class="dac-sprite dac-arrow-down-gray"></i>
+  </a>
+</div>
+<section class="dac-section dac-gray dac-small dac-invert" id="latest"><div class="wrap">
+  <h2 class="norule">Latest</h2>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="type:blog+tag:featured+tag:preview"
+       data-cardSizes="6x6"
+       data-maxResults="3"></div>
+</div></section>
+
+<section class="dac-section dac-light"><div class="wrap">
+  <h1 class="dac-section-title">Something else</h1>
+  <div class="dac-section-subtitle">
+    Placeholder
+  </div>
+
+  <ul class="dac-section-links">
+    <li class="dac-section-link"><a href="">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Overview and Usage
+    </a></li>
+    <li class="dac-section-link"><a href="/google/play/filters.html">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      User Guide
+    </a></li>
+
+  </ul>
+</div></section>
diff --git a/docs/html/about/about_toc.cs b/docs/html/about/about_toc.cs
index 62d37c5..45e8eb3 100644
--- a/docs/html/about/about_toc.cs
+++ b/docs/html/about/about_toc.cs
@@ -1,11 +1,5 @@
 <ul id="nav">
 
-<li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot?>about/index.html">Welcome</a></div>
-    <ul>
-      <li><a href="<?cs var:toroot?>about/start.html">Get Started</a></li>
-    </ul>
-  </li>
   <li class="nav-section">
     <div class="nav-section-header"><a href="<?cs var:toroot ?>about/versions/lollipop.html"
               zh-tw-lang="Lollipop"
@@ -47,14 +41,20 @@
       </ul>
   </li>
 
-  <li class="nav-section">
+  <!-- <li class="nav-section">
     <div class="nav-section-header"><a href="<?cs var:toroot ?>about/versions/android-4.0-highlights.html">
       <span class="en">Ice Cream Sandwich</span></a></div>
       <ul>
         <li><a href="<?cs var:toroot ?>about/versions/android-4.0.3.html">Android 4.0.3 APIs</a></li>
         <li><a href="<?cs var:toroot ?>about/versions/android-4.0.html">Android 4.0 APIs</a> </li>
       </ul>
+  </li> -->
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="<?cs
+var:toroot?>about/android.html">About Android</a></div>
   </li>
+
   <li class="nav-section">
     <div class="nav-section-header empty"><a href="<?cs
 var:toroot?>about/dashboards/index.html">Dashboards</a></div>
diff --git a/docs/html/about/android.jd b/docs/html/about/android.jd
new file mode 100644
index 0000000..ad0ea7c
--- /dev/null
+++ b/docs/html/about/android.jd
@@ -0,0 +1,111 @@
+page.title=Android, the world's most popular mobile platform
+excludeFromSuggestions=true
+walkthru=0
+header.hide=0
+
+@jd:body
+
+
+<p>Android powers hundreds of millions of mobile devices in more than 190
+countries around the world. It's the largest installed base of any mobile platform
+and growing fast&mdash;every day another million users power up their
+Android devices for the first time and start looking for apps, games,
+and other digital content. </p>
+
+
+<p>Android gives you a world-class platform for creating apps and games for
+Android users everywhere, as well as an open marketplace for distributing
+to them instantly.</p>
+
+<h3>Global partnerships and large installed base</h3>
+
+<p>Building on the contributions of the open-source Linux community and more
+than 300 hardware, software, and carrier partners, Android has rapidly become
+the fastest-growing mobile OS.</p>
+
+<blockquote>Every day more than a million new Android devices are activated worldwide.</blockquote>
+
+<p>Android’s openness has made it a favorite for consumers and developers alike,
+driving strong growth in app consumption. Android users download more than 
+billions of apps and games from Google Play each month. </p>
+
+<p>With its partners, Android is continuously pushing the boundaries of hardware and software
+forward to bring new capabilities to users and developers. For developers, 
+Android innovation lets you build powerful, differentiated applications
+that use the latest mobile technologies.</p>
+
+<h3>Rapid innovation</h3>
+
+<p>Android is continuously pushing the boundaries of hardware and software
+forward, to bring new capabilities to users and developers. For developers, the
+rapid evolution of Android technology lets you stay in front with powerful,
+differentiated applications.</p>
+
+<p>Android gives you access to the latest technologies and innovations across a
+multitude of device form-factors, chipset architectures, and price points. From
+multicore processing and high-performance graphics to state-of-the-art sensors,
+vibrant touchscreens, and emerging mobile technologies.</p>
+
+<h3>Powerful development framework</h3>
+
+<blockquote>Easily optimize a single binary for phones, tablets, and other devices.</blockquote>
+
+<p>Android gives you everything you need to build best-in-class app experiences.
+It gives you a single application model that lets you deploy
+your apps broadly to hundreds of millions of users across a wide range of
+devices&mdash;from phones to tablets and beyond.</p>
+
+<p>Android also gives you tools for creating apps that look great and take
+advantage of the hardware capabilities available on each device. It
+automatically adapts your UI to look its best on each device, while giving you
+as much control as you want over your UI on different device
+types. </p> 
+
+<p>For example, you can create a single app binary that's optimized for
+both phone and tablet form factors. You declare your UI in lightweight sets of XML
+resources, one set for parts of the UI that are common to all form factors and
+other sets for optimzations specific to phones or tablets.
+At runtime, Android applies the correct resource sets based on its screen size,
+density, locale,
+and so on.</p>
+
+
+<p>To help you develop efficiently, the <a href="{@docRoot}tools/index.html">Android 
+    Developer Tools</a>
+offer a full Java IDE with advanced features for developing, debugging, and
+packaging Android apps. Using the IDE, you can develop on any available Android
+device or create virtual devices that emulate any hardware configuration.</p>
+
+<blockquote>1.5 billion downloads a month and growing. Get your apps in front
+of millions of users at Google's scale.</blockquote>
+
+<h3>Open marketplace for distributing your apps</h3>
+
+<p>Google Play is the premier marketplace for selling and distributing Android apps.
+When you publish an app on Google Play, you reach the huge installed base of
+Android.</p>
+
+<div style="float:left;margin-right:24px;margin-top:12px;">
+<img src="{@docRoot}images/gp-device.png">
+</div>
+
+<p>As an open marketplace, Google Play puts you in control of how you sell your
+products. You can publish whenever you want, as often as you want, and to the
+customers you want. You can distribute broadly to all markets and
+devices or focus on specific segments, devices, or ranges of hardware
+capabilities.</p>
+
+<p>You can monetize in the way that works best for your business&mdash;priced or
+free, with in-app products or subscriptions&mdash;for highest engagement and
+revenues. You also have complete control of the pricing for your apps
+and in-app products and can set or change prices in any supported currency at
+any time.<p>
+
+<p>Beyond growing your customer base, Google Play helps you build visibility and
+engagement across your apps and brand. As your apps rise in popularity, Google
+Play gives them higher placement in weekly "top" charts and rankings, and for
+the best apps promotional slots in curated collections.
+</p>
+
+<p>Preinstalled on hundreds of billions of Android devices around the world,
+Google Play can be a growth engine for your business.</p>
\ No newline at end of file
diff --git a/docs/html/about/versions/lollipop.jd b/docs/html/about/versions/lollipop.jd
index 8bc7200..63a6fe9 100644
--- a/docs/html/about/versions/lollipop.jd
+++ b/docs/html/about/versions/lollipop.jd
@@ -3,47 +3,10 @@
 @jd:body
 
 
-
-
-
-
-
-
-
-
-  <div style="padding:0px 0px 0px 20px;float:right;margin:0 -10px 0 0">
-    <img src="{@docRoot}images/home/l-hero_2x.png" srcset="{@docRoot}images/home/l-hero.png 1x, {@docRoot}images/home/l-hero_2x.png 2x" width="460" height="300" >
-  </div>
-
-  <div class="landing-docs" style="float:right;clear:both;margin:68px 0 2em 3em;">
-  <div class="col-4 normal-links highlights" style="font-size:12px;">
-    <h3 id="thisd" >Key Developer Features</h3>
-    <ul style="list-style-type:none;">
-  <li><a href="#Material">Material design</a></li>
-  <li><a href="#Perf">Performance focus</a></li>
-  <li><a href="#Notifications">Notifications</a></li>
-  <li><a href="#TV">Your apps on the big screen</a></li>
-  <li><a href="#Documents">Document-centric apps</a></li>
-  <li><a href="#Connectivity">Advanced connectivity</a></li>
-  <li><a href="#Graphics">High-performance graphics</a></li>
-  <li><a href="#Audio">More powerful audio</a></li>
-  <li><a href="#Camera">Enhanced camera & video</a></li>
-  <li><a href="#Work">Android in the workplace</a></li>
-  <li><a href="#ScreenCapture">Screen capturing and sharing</a></li>
-  <li><a href="#Sensors">New types of sensors</a></li>
-  <li><a href="#WebView">Chromium WebView</a></li>
-  <li><a href="#Accessibility">Accessibility & input</a></li>
-  <li><a href="#Battery">Tools for battery-efficient apps</a></li>
-    </ul>
-  </div>
+<div style="float:right;">
+  <img src="{@docRoot}images/home/l-hero_2x.png" srcset="/images/home/l-hero.png 1x, /images/home/l-hero_2x.png 2x">
 </div>
 
-
-
-
-
-
-
 <p>Welcome to Android 5.0 Lollipop&mdash;the largest and most ambitious release for Android yet!</p>
 
 <p>This release is packed with new features for users and thousands of new APIs for developers. It extends Android even further, from phones, tablets, and wearables, to TVs and cars.</p>
@@ -55,47 +18,63 @@
 <a href="http://www.android.com/versions/lollipop-5-0/"
 >www.android.com</a>.</p>
 
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Key developer features</h2>
+  <ol>
+      <ul style="list-style-type:none;">
+        <li><a href="#Material">Material design</a></li>
+        <li><a href="#Perf">Performance focus</a></li>
+        <li><a href="#Notifications">Notifications</a></li>
+        <li><a href="#TV">Your apps on the big screen</a></li>
+        <li><a href="#Documents">Document-centric apps</a></li>
+        <li><a href="#Connectivity">Advanced connectivity</a></li>
+        <li><a href="#Graphics">High-performance graphics</a></li>
+        <li><a href="#Audio">More powerful audio</a></li>
+        <li><a href="#Camera">Enhanced camera & video</a></li>
+        <li><a href="#Work">Android in the workplace</a></li>
+        <li><a href="#ScreenCapture">Screen capturing and sharing</a></li>
+        <li><a href="#Sensors">New types of sensors</a></li>
+        <li><a href="#WebView">Chromium WebView</a></li>
+        <li><a href="#Accessibility">Accessibility & input</a></li>
+        <li><a href="#Battery">Tools for battery-efficient apps</a></li>
+      </ol>
+</div>
+</div>
+
 <p class="note">
   <strong>Note:</strong> The Android 5.1 Lollipop MR1 update is available with additional features
   and fixes. For more information, see the
   <a href="{@docRoot}about/versions/android-5.1.html">Android 5.1 API Overview</a>.
 </p>
 
-
 <h2 id="Material">Material design</h2>
 
 <p>Android 5.0 brings <a href="http://www.google.com/design/spec">Material design</a> to Android and gives you an expanded UI toolkit for integrating the new design patterns easily in your apps.  </p>
 
-
-
 <p>New <strong>3D views</strong> let you set a z-level to raise elements off of the view hierarchy and cast <strong>realtime shadows</strong>, even as they move.</p>
 
-
 <p>Built-in <strong>activity transitions</strong> take the user seamlessly from one state to another with beautiful, animated motion. The material theme adds transitions for your activities, including the ability to use <strong>shared visual elements</strong> across activities.</p>
 
-
-
-<div style="width:290px;margin-right:35px;float:left">
+<div style="float:left;max-width:280px;margin-right:1em;">
   <div class="framed-nexus5-port-span-5">
   <video class="play-on-hover" autoplay="">
-    <source src="/design/material/videos/ContactsAnim.mp4">
-    <source src="/design/videos/ContactsAnim.webm">
-    <source src="/design/videos/ContactsAnim.ogv">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.mp4">
+    <source src="{@docRoot}design/videos/ContactsAnim.webm">
+    <source src="{@docRoot}design/videos/ContactsAnim.ogv">
   </video>
-  </div>
-  <div style="font-size:10pt;margin-left:20px;margin-bottom:30px">
+</div>
+  <p style="img-caption">
     <em>To replay the movie, click on the device screen</em>
-  </div>
+  </p>
 </div>
 
-
-<p>Ripple animations are available for buttons, checkboxes, and other touch controls in your app.
+<p>Ripple animations are available for buttons, checkboxes, and other touch controls in your app.</p>
 
 <p>You can also define vector drawables in XML and animate them in a variety of ways. Vector drawables scale without losing definition, so they are perfect for single-color in-app icons.</p>
 
 <p>A new system-managed processing thread called <strong>RenderThread</strong> keeps animations smooth even when there are delays in the main UI thread. </p>
 
-
 <h2 id="Perf">Performance focus</h2>
 
 <p>Android 5.0 provides a faster, smoother and more powerful computing experience.</p>
@@ -112,9 +91,12 @@
 
 <h2 id="Notifications">Notifications</h2>
 
+<div style="float:right;clear:left;margin:1em;">
+<img src="{@docRoot}images/versions/notification-headsup.png" />
+</div>
+
 <p>Notifications in Android 5.0 are more visible, accessible, and configurable. </p>
 
-<img src="{@docRoot}images/versions/notification-headsup.png" style="float:right; margin:0 0 40px 60px" width="300" height="224" />
 
 <p>Varying notification details may appear <strong>on the lock screen</strong> if desired by the user. Users may elect to allow none, some, or all notification content to be shown on a secure lock screen. </p>
 
@@ -124,8 +106,6 @@
 
 <p>A new media notification template provides consistent media controls for notifications with up to 6 action buttons, including custom controls such as "thumbs up"&mdash;no more need for RemoteViews!</p>
 
-
-
 <h2 id="TV">Your apps on the big screen</h2>
 
 <p><a href="http://developer.android.com/tv/index.html">Android TV</a> provides a complete TV platform for your app's big screen experience. Android TV is centered around a simplified home screen experience that allows users to discover content easily, with personalized recommendations and voice search.</p>
@@ -136,12 +116,14 @@
 
 <p>The TV Input Framework provides access to a wide variety of live TV input sources and brings them together in a single user interface for users to browse, view, and enjoy content. Building a TV input service for your content can help make your content more accessible on TV devices.</p>
 
-
-
-<img src="{@docRoot}images/versions/recents_screen_2x.png" srcset="{@docRoot}images/versions/recents_screen.png 1x, {@docRoot}images/versions/recents_screen_2x.png 2x" style="float:right; margin:0 0 40px 60px" width="300" height="521" />
-
 <h2 id="Documents">Document-centric apps</h2>
 
+<div style="float:right;margin:1em;max-width:320px">
+<img src="{@docRoot}images/versions/recents_screen_2x.png"
+    srcset="/images/versions/recents_screen.png 1x, /images/versions/recents_screen_2x.png 2x" />
+<p class="img-caption">Document-centric recents.</p>
+</div>
+
 <p>Android 5.0 introduces a redesigned Overview space (formerly called Recents) that’s more versatile and useful for multitasking.</p>
 
 <p>New APIs allow you to show separate activities in your app as individual documents alongside other recent screens.</p>
@@ -149,7 +131,6 @@
 <p>You can take advantage of concurrent documents to provide users instant access to more of your content or services. For example, you might use concurrent documents to represent files in a productivity app, player matches in a game, or chats in a messaging app. </p>
 
 
-
 <h2 id="Connectivity">Advanced connectivity</h2>
 
 <p>Android 5.0 adds new APIs that allow apps to perform concurrent operations with <strong>Bluetooth Low Energy</strong> (BLE), allowing both scanning (central mode) and advertising (peripheral mode).</p>
@@ -164,14 +145,13 @@
 
 <p>Support for <strong><a href="http://www.khronos.org/opengles/3_X/">Khronos OpenGL ES 3.1</a></strong> now provides games and other apps the highest-performance 2D and 3D graphics capabilities on supported devices. </p>
 
-<p>OpenGL ES 3.1 adds compute shaders, stencil textures, accelerated visual effects, high quality ETC2/EAC texture compression, advanced texture rendering, standardized texture size and render-buffer formats, and more.</p>
-
-
-<div class="figure" style="width:350px; margin:0 0 0 60px">
-<img src="{@docRoot}images/versions/rivalknights.png" style="float:right;" width="350" height="525" />
+<div style="float:right;margin:1em;max-width:350px">
+<img src="{@docRoot}images/versions/rivalknights.png"  />
 <p class="img-caption">Gameloft's Rival Knights uses ASTC (Adaptive Scalable Texture Compression) from AEP and Compute Shaders from ES 3.1 to deliver HDR (High Dynamic Range) Bloom effects and provide more graphical detail.</p>
 </div>
 
+<p>OpenGL ES 3.1 adds compute shaders, stencil textures, accelerated visual effects, high quality ETC2/EAC texture compression, advanced texture rendering, standardized texture size and render-buffer formats, and more.</p>
+
 <p>Android 5.0 also introduces the <strong>Android Extension Pack</strong> (AEP), a set of OpenGL ES extensions that give you access to features like tessellation shaders, geometry shaders, ASTC texture compression, per-sample interpolation and shading, and other advanced rendering capabilities. With AEP you can deliver high-performance graphics across a range of GPUs.</p>
 
 
@@ -187,7 +167,7 @@
 
 <p>Android now includes support for standard <strong>USB audio</strong> peripherals, allowing users to connect USB headsets, speakers, microphones, or other high performance digital peripherals. Android 5.0 also adds support for <strong>Opus</strong> audio codecs.</p>
 
-<p>New <strong>{@link android.media.session.MediaSession}</strong> APIs for controlling media playback now make it easier to provide consistent media controls across screens and other controllers.</p>
+<p>New <strong><code><a href="{@docRoot}reference/android/media/session/MediaSession.html">MediaSession</a></code></strong> APIs for controlling media playback now make it easier to provide consistent media controls across screens and other controllers.</p>
 
 
 <h2 id="Camera">Enhanced camera &amp; video</h2>
@@ -203,19 +183,17 @@
 <p>Android 5.0 also adds support for <strong>multimedia tunneling</strong> to provide the best experience for ultra-high definition (4K) content and the ability to play compressed audio and video data together. </p>
 
 
+<h2 id="Work">Android in the workplace</h2>
 
-<div class="figure" style="width:320px; margin:1em 0 0 20px;padding-left:2em;">
-<img style="float:right; margin:0 1em 1em 2em"
+<div style="float:right;margin:1em;max-width:330px">
+<img 
     src="{@docRoot}images/android-5.0/managed_apps_launcher@2x.png"
-    srcset="{@docRoot}images/android-5.0/managed_apps_launcher@2x.png 2x"
-    alt="" width="300" />
+    srcset="/images/android-5.0/managed_apps_launcher@2x.png 2x"
+    alt="" />
 <p class="img-caption">Users have a unified view of their personal and work apps, which are
 badged for easy identification.</p>
 </div>
 
-
-<h2 id="Work">Android in the workplace</h2>
-
 <p>To enable bring-your-own-device for enterprise environments, a new
 <a href="{@docRoot}about/versions/android-5.0.html#Enterprise">managed provisioning process</a>
 creates a secure work profile on the device. In the launcher, apps are shown with a Work badge to
@@ -231,8 +209,6 @@
 issue these devices with a device owner app already installed that
 can configure global device settings.</p>
 
-
-
 <h2 id="ScreenCapture">Screen capturing and sharing</h2>
 
 <p>Android 5.0 lets you add screen capturing and screen sharing capabilities to your app. </p>
@@ -247,14 +223,13 @@
 <p>New <strong>interaction composite sensors</strong> are now available to detect special interactions such as a <em>wake up</em> gesture, a <em>pick up</em> gesture, and a <em>glance</em> gesture.</p>
 
 
-
 <h2 id="WebView">Chromium WebView</h2>
 
 <div style="float:right;margin:1em 2em 1em 2em;">
-  <img src="/images/kk-chromium-icon.png" alt="" height="160" style="margin-bottom:0em;">
+  <img src="{@docRoot}images/kk-chromium-icon.png" alt="" height="160" style="margin-bottom:0em;">
 </div>
 
-<p>The initial release for Android 5.0 includes a version of Chromium for {@link android.webkit.WebView} based on the Chromium M37 release, adding support for <strong>WebRTC</strong>, <strong>WebAudio</strong>, and <strong>WebGL</strong>. </p>
+<p>The initial release for Android 5.0 includes a version of Chromium for <code><a href="{@docRoot}reference/android/webkit/WebView.html">WebView</a></code> based on the Chromium M37 release, adding support for <strong>WebRTC</strong>, <strong>WebAudio</strong>, and <strong>WebGL</strong>. </p>
 
 <p>Chromium M37 also includes native support for all of the <strong>Web Components</strong> specifications: Custom Elements, Shadow DOM, HTML Imports, and Templates. This means you can use <a href="http://polymer-project.org/">Polymer</a> and its <a href="https://www.polymer-project.org/docs/elements/material.html">material design elements</a> in a WebView without needing polyfills.</p>
 
@@ -262,8 +237,6 @@
 
 <p>As new versions of Chromium become available, users can update from Google Play to ensure they get the latest enhancements and bug fixes for WebView, providing the latest web APIs and bug fixes for apps using WebView on Android 5.0 and higher.</p>
 
-
-
 <h2 id="Accessibility">Accessibility &amp; input</h2>
 
 <p>New accessibility APIs can retrieve detailed information about the properties of windows on the screen that sighted users can interact with and define standard or customized input actions for UI elements.</p>
@@ -271,13 +244,12 @@
 <p>New Input method editor (IME) APIs enable faster switching to other IMEs directly from the input method.</p>
 
 
-
 <h2 id="Battery">Tools for building battery-efficient apps</h2>
 
 <p>New <strong>job scheduling</strong> APIs allow you optimize battery life by deferring jobs for the system to run at a later time or under specified conditions, such as when the device is charging or connected to Wi-Fi.</p>
 
 <p>A new <code>dumpsys batterystats</code> command generates <strong>battery usage statistics</strong> that you can use to understand system-wide power use and understand the impact of your app on the device battery. You can look at a history of power events, approximate power use per UID and system component, and more.</p>
 
-<img src="{@docRoot}images/versions/battery_historian.png" srcset="{@docRoot}images/versions/battery_historian@2x.png 2x" alt="" width="760" height="462" />
+<img src="{@docRoot}images/versions/battery_historian.png" srcset="/images/versions/battery_historian@2x.png 2x" alt="" width="760" height="462" />
 <p class="img-caption">Battery Historian is a new tool to convert the statistics from <code>dumpsys batterystats</code> into a visualization for battery-related debugging. You can find it at <a href="https://github.com/google/battery-historian"
->https://github.com/google/battery-historian</a>.</p>
+>https://github.com/google/battery-historian</a>.</p>
\ No newline at end of file
diff --git a/docs/html/auto/index.jd b/docs/html/auto/index.jd
index ca63a54..66ea15a 100644
--- a/docs/html/auto/index.jd
+++ b/docs/html/auto/index.jd
@@ -3,7 +3,7 @@
 fullpage=true
 no_footer_links=true
 page.type=about
-page.image=/auto/images/hero.jpg
+page.image=/images/cards/android-auto_2x.png
 
 @jd:body
 
@@ -12,9 +12,6 @@
 #jd-content>.content-footer.wrap {
   display:none;
 }
-#hero-height {
-  height:calc(100% - 100px);
-}
 .img-logo {
   margin:0 auto;
   display:block;
diff --git a/docs/html/design/building-blocks/buttons.jd b/docs/html/design/building-blocks/buttons.jd
deleted file mode 100644
index e698f38..0000000
--- a/docs/html/design/building-blocks/buttons.jd
+++ /dev/null
@@ -1,99 +0,0 @@
-page.title=Buttons
-page.tags=button,input
-@jd:body
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/components/buttons.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Buttons<p>
-  </div>
-</a>
-
-<a class="notice-developers" href="{@docRoot}guide/topics/ui/controls/button.html">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>Buttons</p>
-  </div>
-</a>
-
-<p itemprop="description">A button consists of text and/or an image that clearly communicates what action
-  will occur when the user touches it. A button can have an image, text, or both.
-</p>
-
-<div class="layout-content-row" style="margin-top:22px">
-  <div class="layout-content-col span-3">
-    <img src="{@docRoot}design/media/icon_magnifying_glass.png" style="height:64px;padding:20px 0 0 40px;">
-  </div>
-  <div class="layout-content-col span-3">
-    <img src="{@docRoot}design/media/buttons_text.png"  style="height:94px;">
-  </div>
-  <div class="layout-content-col span-7">
-    <img src="{@docRoot}design/media/buttons_image_and_text.png"  style="height:94px;">
-  </div>
-</div>
-
-<div class="layout-content-row" style="margin-top:0;">
-  <div class="layout-content-col span-3">
-      <p>An image alone works best when the action can be represented by a symbol that's well understood.</p>
-  </div>
-  <div class="layout-content-col span-3">
-      <p>Text alone is most appropriate for actions that would be difficult to
-      represent visually, or are critical to convey in words to avoid any ambiguity.</p>
-  </div>
-  <div class="layout-content-col span-7">
-    <p>
-      Both an icon and text is most appropriate when they complement each other:
-      each carrying its own bit of information, but together making a larger whole.
-    </p>
-
-    <p>
-      For example, in a birthday reminder card in Google Now, the button's text
-      describes the action while its image indicates that the action will be done
-      in Google+.
-    </p>
-  </div>
-</div>
-
-<h3>What about button backgrounds?</h3>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-    <p>For <strong>image-only</strong> buttons, a background isn't necessary because
-    users are accustomed to interacting with objects.</p>
-
-    <div class="layout-content-row" style="margin-left:72px">
-      <div class="layout-content-col span-2">
-        <div class="do-dont-label bad emulate-content-left-padding" style="width:30px">Don't</div>
-        <img src="{@docRoot}design/media/buttons_image_bg_dont.png" style="padding-left:14px;">
-      </div>
-      <div class="layout-content-col span-2" style="width:29px;margin-left:10px;">
-        <div class="do-dont-label good"><strong>Do</strong></div>
-        <img src="{@docRoot}design/media/icon_alarm.png" style="width:31px;padding-top:7px;">
-      </div>
-    </div>
-  </div>
-
-<div class="layout-content-col span-7">
-<p>
-  For buttons <strong>with text</strong>, a background is also usually
-  unnecessary. To invite users to touch, phrase it as a clear action (e.g.
-  "Start", "Sign in") and use different color and formatting than the screen's
-  usual body text.
-</p>
-
-<p>
-  Use buttons with backgrounds sparingly. Because they have a heavy appearance,
-  they work best when there's only one or two of them on the screen. They're
-  most appropriate for:
-</p>
-
-<ul>
-  <li>A call to action you really want users to pursue (e.g. "Sign up")</li>
-  <li>A key decision point (e.g. "Accept" / "Decline")</li>
-  <li>When the user is about to commit a significant action (e.g. "Erase
-  everything", "Buy now")</li>
-</ul>
-</div>
-</div>
-
diff --git a/docs/html/design/building-blocks/dialogs.jd b/docs/html/design/building-blocks/dialogs.jd
deleted file mode 100644
index 9c91abf..0000000
--- a/docs/html/design/building-blocks/dialogs.jd
+++ /dev/null
@@ -1,186 +0,0 @@
-page.title=Dialogs
-page.tags=dialog,alert,popup,toast
-@jd:body
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/components/dialogs.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Dialogs<p>
-  </div>
-</a>
-
-<a class="notice-developers" href="{@docRoot}guide/topics/ui/dialogs.html">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>Dialogs</p>
-  </div>
-</a>
-
-<p itemprop="description">Dialogs prompt the user for decisions or additional information required by the app to continue a
-task. Such requests can range from simple Cancel/OK decisions to more complex layouts asking the
-user to adjust settings or enter text.</p>
-
-<img src="{@docRoot}design/media/dialogs_main.png">
-
-<div class="with-callouts">
-
-<ol>
-  <li>
-  <h4>Optional title region</h4>
-  <p>The title introduces the content of your dialog. It can, for example, identify the name of a
-   setting that the user is about to change, or request a decision.</p>
-  </li>
-  <li>
-  <h4>Content area</h4>
-  <p>Dialog content varies widely. For settings dialogs, a dialog may contain UI elements such as
-   sliders, text fields, checkboxes, or radio buttons that allow the user to change app or system
-   settings. In other cases, such as alerts, the content may consist solely of text that provides
-   further context for a user decision.</p>
-  </li>
-
-  <li>
-  <h4>Action buttons</h4>
-  <p>Action buttons are typically Cancel and/or OK, with OK indicating the preferred or most likely action. However, if the options consist of specific actions such as Close or Wait rather than a confirmation or cancellation of the action described in the content, then all the buttons should be active verbs. Order actions following these rules:</p>
-    <ul>
-
-    <li>The dismissive action of a dialog is always on the left. Dismissive actions return to the user to the previous state.</li>
-    <li>The affirmative actions are on the right. Affirmative actions continue progress toward the user goal that triggered the dialog.</li>
-    </ul>
-  </li>
-</ol>
-</div>
-
-<img src="{@docRoot}design/media/dialogs_examples.png">
-<div class="figure-caption">
-  Samples of typical dialog use in Android.
-</div>
-
-<h2 id="alerts">Alerts</h2>
-
-<p>Alerts inform the user about a situation that requires their confirmation or acknowledgement before
-proceeding. They differ slightly in appearance based upon the severity and impact of the message
-conveyed.</p>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-8">
-
-    <img src="{@docRoot}design/media/dialogs_w_no_title.png">
-
-  </div>
-  <div class="layout-content-col span-5">
-
-<h4>Alerts without title bars</h4>
-<p>Most alerts don't need titles. Usually the decision doesn't have a severe impact and can be summed
-up succinctly in a sentence or two. The content area should either ask a question (such as "Delete
-this conversation?") or make a clear statement whose relationship to the action buttons is obvious.</p>
-
-  </div>
-</div>
-
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-8">
-
-    <img src="{@docRoot}design/media/dialogs_w_title.png">
-
-  </div>
-  <div class="layout-content-col span-5">
-
-<h4>Alerts with title bars</h4>
-<p>Use alerts with title bars sparingly. They are appropriate only when a high-risk operation involving
-potential loss of data, connectivity, extra charges, and so on requires a clear question or
-statement (the title) and some additional explanation (in the content area).</p>
-<p>Keep the question or statement short: for example, "Erase USB storage?" Avoid apologies. A user
-should be able to skip the content completely and still have a clear idea of what choices are
-available based on the title and the text of the action buttons.</p>
-
-  </div>
-</div>
-<p>When crafting a confirmation dialog, make the title meaningful by echoing the requested action.</p>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
-    <div class="do-dont-label bad">Don't</div>
-      <table class="ui-table bad">
-      <thead>
-        <tr>
-          <th class="label">
-          Are you sure?
-          </th>
-        </tr>
-      </thead>
-      </table>
-  </div>
-  <div class="layout-content-col span-4">
-    <div class="do-dont-label bad">Don't</div>
-      <table class="ui-table bad">
-      <thead>
-        <tr>
-          <th class="label">
-          Warning!
-          </th>
-        </tr>
-      </thead>
-      </table>
-  </div>
-  <div class="layout-content-col span-5">
-    <div class="do-dont-label good">Do</div>
-      <table class="ui-table good">
-      <thead>
-        <tr>
-          <th class="label">
-          Erase USB storage?
-          </th>
-        </tr>
-      </thead>
-      </table>
-  </div>
-</div>
-
-
-<h2 id="popups">Popups</h2>
-
-<p>Popups are lightweight version of dialogs that require a single selection from the user. Popups
-don't have have explicit buttons that accept or cancel the operation. Instead, making a selection
-advances the workflow, and simply touching outside the popup dismisses it.</p>
-
-<img src="{@docRoot}design/media/dialogs_popups_example.png">
-
-
-<h2 id="toasts">Toasts</h2>
-
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-
-    <div class="vspace size-3"></div>
-
-<p>Toasts provide lightweight feedback about an operation in a small popup. For example, navigating
-away from an email before you send it triggers a "Draft saved" toast to let you know that you can
-continue editing later. Toasts automatically disappear after a timeout.</p>
-
-<a class="notice-designers-material left"
-  href="http://www.google.com/design/spec/components/snackbars-toasts.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Toasts<p>
-  </div>
-</a>
-
-
-<a class="notice-developers left" href="{@docRoot}guide/topics/ui/notifiers/toasts.html">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>Toasts</p>
-  </div>
-</a>
-
-  </div>
-  <div class="layout-content-col span-7">
-
-    <img src="{@docRoot}design/media/dialogs_toasts.png">
-
-  </div>
-</div>
-
diff --git a/docs/html/design/building-blocks/grid-lists.jd b/docs/html/design/building-blocks/grid-lists.jd
deleted file mode 100644
index ac3a3ebf..0000000
--- a/docs/html/design/building-blocks/grid-lists.jd
+++ /dev/null
@@ -1,96 +0,0 @@
-page.title=Grid Lists
-page.tags=gridview,layout,listview
-@jd:body
-
-<img src="{@docRoot}design/media/gridview_overview.png">
-
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/components/grid-lists.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Grid lists<p>
-  </div>
-</a>
-
-<a class="notice-developers" href="{@docRoot}guide/topics/ui/layout/gridview.html">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>Grid View</p>
-  </div>
-</a>
-
-<p itemprop="description">Grid lists are an alternative to standard list views. They are best suited for showing data sets
-that represent themselves through images. In contrast to simple lists, grid lists may scroll either
-vertically or horizontally.</p>
-
-
-
-<h2 id="generic_grid">Generic Grids</h2>
-
-
-<p>The items in a grid list are arranged in two dimensions, one of which is fixed when scrolling
-content. The scrolling direction dictates the ordering of the items within the grid list. Since the
-scrolling direction is not deterministic, make it easy for the user to determine the orientation by
-cutting off grid items to communicate where the overflow is located.</p>
-<p>Avoid creating grid lists that scroll in two dimensions.</p>
-
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
-
-    <img src="{@docRoot}design/media/gridview_vertical.png">
-
-  </div>
-  <div class="layout-content-col span-6">
-
-<h4>Vertical scrolling</h4>
-<p>Vertically scrolling grid list items are sorted in traditional western reading direction:
-left-to-right and top-down. When displaying the list, cut off the items in the bottom row to
-communicate that the user can scroll the list down to show additional items. Be sure to retain this
-scheme when the user rotates the screen.</p>
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
-
-    <img src="{@docRoot}design/media/gridview_horizontal.png">
-
-  </div>
-  <div class="layout-content-col span-6">
-
-<h4>Horizontal scrolling</h4>
-<p>Horizontally scrolling lists fix the vertical axis of the item grid. Compared to vertically
-scrolling lists, the sorting changes slightly to a top-down and left-to-right arrangement. Employ
-the same technique of cutting off the items in the rightmost column to indicate the scrolling
-direction.</p>
-<p>Don't use scrolling tabs as a means to switch views in conjunction with horizontally scrolling grid
-lists, because the horizontal gesture for view and content navigation will conflict. If you show
-scrolling tabs for view navigation together with a grid list, use vertical grid scrolling for list
-navigation.</p>
-
-  </div>
-</div>
-
-
-<h2 id="with-labels">Grid List with Labels</h2>
-
-<p>Use labels to display additional contextual information for your grid list items.</p>
-
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
-
-    <img src="{@docRoot}design/media/gridview_style.png">
-
-  </div>
-  <div class="layout-content-col span-6">
-
-<h4>Style</h4>
-<p>Use semi-transparent panels on top of the grid list items to display your labels. This allows you to
-control the contrast and ensures legibility of the labels while letting the content "shine through".</p>
-
-  </div>
-</div>
diff --git a/docs/html/design/building-blocks/index.jd b/docs/html/design/building-blocks/index.jd
deleted file mode 100644
index 7fb0e55..0000000
--- a/docs/html/design/building-blocks/index.jd
+++ /dev/null
@@ -1,30 +0,0 @@
-page.title=Building Blocks
-header.justLinks=1
-footer.hide=1
-@jd:body
-
-<style>
-#landing-graphic-container {
-  position: relative;
-}
-
-#text-overlay {
-  position: absolute;
-  left: 0;
-  top: 520px;
-  width: 450px;
-}
-</style>
-
-<div id="landing-graphic-container">
-  <div id="text-overlay">
-    <span itemprop="description">Your inventory of ready-to-use elements for creating
-    outstanding apps.</span>
-    <br><br>
-    <a href="{@docRoot}design/building-blocks/tabs.html" class="landing-page-link">Tabs</a>
-  </div>
-
-  <a href="{@docRoot}design/building-blocks/tabs.html">
-    <img src="{@docRoot}design/media/building_blocks_landing.png">
-  </a>
-</div>
diff --git a/docs/html/design/building-blocks/lists.jd b/docs/html/design/building-blocks/lists.jd
deleted file mode 100644
index 6f69feb..0000000
--- a/docs/html/design/building-blocks/lists.jd
+++ /dev/null
@@ -1,56 +0,0 @@
-page.title=Lists
-page.tags=listview,layout
-@jd:body
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/components/lists.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Lists<p>
-  </div>
-</a>
-
-<p itemprop="description">Lists present multiple line items in a vertical arrangement. They can be used for data selection as
-well as drilldown navigation.</p>
-
-<div class="vspace size-1">&nbsp;</div>
-
-<div class="layout-content-row clearfix">
-  <div class="layout-content-col span-9">
-
-    <img src="{@docRoot}design/media/lists_main.png">
-
-  </div>
-  <div class="layout-content-col span-4 with-callouts">
-
-<ol style="margin-bottom: 60px;">
-<li>
-<h4>Section Divider</h4>
-<p>Use section dividers to organize the content of your list into groups and facilitate scanning.</p>
-</li>
-<li>
-<h4>Line Items</h4>
-<p>List items can accommodate a wide range of data types in different arrangements, including
- simple single-line items, multi-line items, and custom items with icons, checkboxes, and action
- buttons.</p>
-</li>
-</ol>
-
-<a class="notice-developers" href="{@docRoot}guide/topics/ui/layout/listview.html">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>List View</p>
-  </div>
-</a>
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/components/lists-controls.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Lists: Controls<p>
-  </div>
-</a>
-
-
-  </div>
-</div>
diff --git a/docs/html/design/building-blocks/pickers.jd b/docs/html/design/building-blocks/pickers.jd
deleted file mode 100644
index fb5e287..0000000
--- a/docs/html/design/building-blocks/pickers.jd
+++ /dev/null
@@ -1,40 +0,0 @@
-page.title=Pickers
-page.tags=datepicker,timepicker
-@jd:body
-
-<a class="notice-developers" href="{@docRoot}guide/topics/ui/controls/pickers.html">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>Pickers</p>
-  </div>
-</a>
-
-<p itemprop="description">Pickers provide a simple way to select a single value from a set. In addition to touching the
-up/down arrow buttons, it's possible to set the desired value from the keyboard or via a swipe
-gesture.</p>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-
-    <img src="{@docRoot}design/media/picker_space.png">
-
-  </div>
-  <div class="layout-content-col span-6">
-
-<h4>Space considerations</h4>
-<p>Pickers can be used inline on a form, but their relatively large footprint is best suited for
-display in a dialog. For inline display, consider using more compact controls such as text fields or
-spinners.</p>
-
-  </div>
-</div>
-
-<h2 id="date-time">Date and time pickers</h2>
-
-<p>Android provides these as ready-to-use dialogs. Each picker is a dialog with a set of controls for
-entering the parts of the date (month, day, year) or time (hour, minute, AM/PM). Using these in your
-app helps ensure that a user's specification of a data or time input is valid and formatted
-correctly. The format of a time and date picker adjusts automatically to the locale.</p>
-
-<img src="{@docRoot}design/media/picker_datetime.png">
-
diff --git a/docs/html/design/building-blocks/progress.jd b/docs/html/design/building-blocks/progress.jd
deleted file mode 100644
index 2de75dc..0000000
--- a/docs/html/design/building-blocks/progress.jd
+++ /dev/null
@@ -1,105 +0,0 @@
-page.title=Progress &amp; Activity
-page.tags=progressbar,download,network
-@jd:body
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/components/progress-activity.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Progress and Activity<p>
-  </div>
-</a>
-
-<p>Progress bars and activity indicators signal to users that something is happening that will take a moment.</p>
-<h2 id="progress">Progress bars</h2>
-
-<p>Progress bars are for situations where the percentage completed can be determined. They give users a quick sense of how much longer an operation will take.</p>
-
-<img src="{@docRoot}design/media/progress_download.png">
-
-<p>A progress bar should always fill from 0% to 100% and never move backwards to a lower value. If multiple operations are happening in sequence, use the progress bar to represent the delay as a whole, so that when the bar reaches 100%, it doesn't return back to 0%.</p>
-
-<div class="vspace size-2">&nbsp;</div>
-
-<img src="{@docRoot}design/media/progress_themes.png">
-<div class="figure-caption">
-  Progress bar in Holo Dark and Holo Light.
-</div>
-
-<h2 id="activity">Activity indicators</h2>
-
-<p>Activity indicators are for operations of an indeterminate length. They ask users to wait a moment while something finishes up, without getting into specifics about what's happening behind the scenes.</p>
-
-<p>Two styles are available: a bar and a circle. Each is offered in a variety of sizes, in both Holo Light and Holo Dark themes. Choose the appropriate style and size for the surrounding context. For example, the largest activity circle works well when displayed in a blank content area, but not in a smaller dialog box. Each operation should only be represented by one activity indicator.</p>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-
-    <img src="{@docRoot}design/media/progress_activity.png">
-
-  </div>
-  <div class="layout-content-col span-7 with-callouts">
-
-    <ol>
-      <li class="value-1"><h4>Activity bar</h4>
-        <p>In this example, an activity bar (in Holo Dark) appears when a user first requests a download. There's an unknown period of time when the download has not yet started. As soon as the download starts, this activity bar transforms into a progress bar.</p>
-      </li>
-    </ol>
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-
-    <img src="{@docRoot}design/media/progress_activity2.png">
-
-  </div>
-  <div class="layout-content-col span-7 with-callouts">
-
-    <ol>
-      <li class="value-2"><h4>Activity circle</h4>
-        <p>In this example, an activity circle (in Holo Light) is used in the Gmail application when a message is being loaded because it's not possible to determine how long it will take to download the email.</p>
-        <p>When displaying an activity circle, do not include text to communicate what the app is doing. The moving circle alone provides sufficient feedback about the delay, and does so in an understated way that minimizes the impact.</p>
-        <p>
-        <div style="margin-left:0;margin-top:1em;">
-          <img src="{@docRoot}design/media/progress_activity_do_dont.png">
-        </div>
-        </p>
-      </li>
-    </ol>
-
-  </div>
-</div>
-
-<h2 id="custom-indicators">Custom indicators</h2>
-<p>The standard progress bar and activity indicators work well for most situations and should be used whenever possible to provide a consistent experience across Android. However, some situations may call for something more custom.</p>
-
-<p>Here's an example:<br>
-In all of the Google Play apps (Music, Books, Movies, Magazines), we wanted the current download state of each item to be visible at all times at the top-level screen. These states are:
-  <ul>
-    <li>Not downloaded</li>
-    <li>Temporarily downloaded (automatically cached by the app)</li>
-    <li>Permanently downloaded on the device at the user's request</li>
-  </ul>
-</p>
-<p>We also needed to indicate progress from one download state to another, because downloading is not instantaneous.</p>
-<p>This presented a challenge, because the Google Play apps use a variety of different layouts, and some of them are highly space-constrained. We didn't want this information to clutter the top-level screens, or compete too much with the cover art.</p>
-<p>So we designed a custom indicator that could show all of the information in a tiny footprint, with the flexibility to appear on top of content if necessary.</p>
-
-<img src="{@docRoot}design/media/progress_activity_custom.png">
-
-<p>The color indicates whether it's downloaded (blue) or not (gray). The appearance of the pin indicates whether the download is permanent (white, upright) or temporary (gray, diagonal). And when state is in the process of changing, progress is indicated by a moving pie chart.</p>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-9">
-    <img src="{@docRoot}design/media/progress_activity_custom_app.png">
-  </div>
-  <div class="layout-content-col span-4">
-    <div class="figure-caption">
-      Across Google Play apps with different layouts, the same custom indicator appears with each item. It communicates download state as well as progress, in a compact package that can be incorporated into any screen design.
-    </div>
-  </div>
-</div>
-
-<p>If you find that the standard indicators aren't meeting your needs (due to space constraints, state complexities), by all means design your own. Make it feel like part of the Android family by injecting some of the visual characteristics of the standard indicators. In this example, we carried over the circular shape, the same shade of blue, and the flat and simple style.</p>
diff --git a/docs/html/design/building-blocks/scrolling.jd b/docs/html/design/building-blocks/scrolling.jd
deleted file mode 100644
index 04b1e4a..0000000
--- a/docs/html/design/building-blocks/scrolling.jd
+++ /dev/null
@@ -1,39 +0,0 @@
-page.title=Scrolling
-page.tags=scrollview,listview
-@jd:body
-
-
-<p>Scrolling allows the user to navigate to content in the overflow using a swipe gesture. The
-scrolling speed is proportional to the speed of the gesture.</p>
-<h2 id="indicator">Scroll Indicator</h2>
-
-<p>Appears during scrolling to indicate what portion of the content is currently in view.</p>
-
-<div class="framed-nexus5-land-span-13">
-  <video class="play-on-hover" autoplay>
-    <source src="{@docRoot}design/media/scroll_indicator.mp4" type="video/mp4">
-    <source src="{@docRoot}design/media/scroll_indicator.webm" type="video/webm">
-    <source src="{@docRoot}design/media/scroll_indicator.ogv" type="video/ogg">
-  </video>
-</div>
-<div class="figure-caption">
-  <div class="video-instructions">&nbsp;</div>
-</div>
-
-<h2 id="index-scrolling">Index Scrolling</h2>
-
-<p>In addition to traditional scrolling, a long alphabetical list can also offer index scrolling: a way
-to quickly navigate to the items that begin with a particular letter. With index scrolling, a scroll
-indicator appears even when the user isn't scrolling. Touching or dragging it causes the current
-letter to pop up in a prominent way.</p>
-
-<div class="framed-nexus5-land-span-13">
-  <video class="play-on-hover" autoplay>
-    <source src="{@docRoot}design/media/scroll_index.mp4" type="video/mp4">
-    <source src="{@docRoot}design/media/scroll_index.webm" type="video/webm">
-    <source src="{@docRoot}design/media/scroll_index.ogv" type="video/ogg">
-  </video>
-</div>
-<div class="figure-caption">
-  <div class="video-instructions">&nbsp;</div>
-</div>
diff --git a/docs/html/design/building-blocks/seek-bars.jd b/docs/html/design/building-blocks/seek-bars.jd
deleted file mode 100644
index 5c42102..0000000
--- a/docs/html/design/building-blocks/seek-bars.jd
+++ /dev/null
@@ -1,45 +0,0 @@
-page.title=Seek Bars and Sliders
-page.tags=seekbar,progressbar
-@jd:body
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/components/sliders.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Sliders<p>
-  </div>
-</a>
-
-<p>Interactive sliders make it possible to select a value from a continuous or discrete range of values
-by moving the slider thumb. The smallest value is to the left, the largest to the right. The
-interactive nature of the slider makes it a great choice for settings that reflect intensity levels,
-such as volume, brightness, or color saturation.</p>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-9">
-
-    <img src="{@docRoot}design/media/seekbar_example.png">
-
-  </div>
-  <div class="layout-content-col span-4">
-
-<div class="vspace size-2">&nbsp;</div>
-
-<h4>Example</h4>
-<p>Interactive slider to set the ringer volume. The value can either be set through the hardware volume controls or interactively via a gesture.</p>
-
-  </div>
-</div>
-
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-9">
-
-    <img src="{@docRoot}design/media/seekbar_style.png">
-    <div class="figure-caption">
-      Seek bars in Holo Light &amp; Dark
-    </div>
-
-  </div>
-  <div class="layout-content-col span-4">&nbsp;</div>
-</div>
diff --git a/docs/html/design/building-blocks/spinners.jd b/docs/html/design/building-blocks/spinners.jd
deleted file mode 100644
index 3a74ccf..0000000
--- a/docs/html/design/building-blocks/spinners.jd
+++ /dev/null
@@ -1,54 +0,0 @@
-page.title=Spinners
-page.tags=spinner,dropdown
-@jd:body
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/components/menus.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Menus<p>
-  </div>
-</a>
-
-<a class="notice-developers" href="{@docRoot}guide/topics/ui/controls/spinner.html">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>Spinners</p>
-  </div>
-</a>
-
-<p itemprop="description">Spinners provide a quick way to select one value from a set. In the default state, a spinner shows
-its currently selected value. Touching the spinner displays a dropdown menu with all other available
-values, from which the user can select a new one.</p>
-
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-
-    <img src="{@docRoot}design/media/spinners_form.png">
-
-<h4>Spinners in forms</h4>
-<p>Spinners are useful for data picking in forms. They are compact and integrate nicely with other
-components. Use spinners in forms for both simple data input and in combination with other input
-fields. For example, a text field might let you edit an email address for a contact, while its
-associated spinner allows you to select whether it's a Home or Work address.</p>
-
-  </div>
-  <div class="layout-content-col span-7">
-
-    <img src="{@docRoot}design/media/spinners_actionbar.png">
-
-<h4>Spinners in action bars</h4>
-<p>Use spinners in action bars to switch views. For example, Gmail uses a spinner to permit switching
-between accounts or commonly used labels. Spinners are useful when changing the view is important to
-your app, but not necessarily a frequent occurrence. In cases where view switching is frequent, use
-tabs.</p>
-
-  </div>
-</div>
-
-<img src="{@docRoot}design/media/spinners_hololightanddark.png">
-<div class="figure-caption">
-  Spinners in the Holo Dark and Holo Light themes, in various states.
-</div>
-
diff --git a/docs/html/design/building-blocks/switches.jd b/docs/html/design/building-blocks/switches.jd
deleted file mode 100644
index 9dd09ca..0000000
--- a/docs/html/design/building-blocks/switches.jd
+++ /dev/null
@@ -1,64 +0,0 @@
-page.title=Switches
-page.tags=switch,checkbox,radiobutton,button
-@jd:body
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/components/selection-controls.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Selection Controls<p>
-  </div>
-</a>
-
-<p>Switches allow the user to select options. There are three kinds of switches: checkboxes, radio
-buttons, and on/off switches.</p>
-
-
-
-<h2 id="checkboxes">Checkboxes</h2>
-
-<a class="notice-developers" href="{@docRoot}guide/topics/ui/controls/checkbox.html">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>Checkboxes</p>
-  </div>
-</a>
-
-<p itemprop="description">Checkboxes allow the user to select multiple options from a set. Avoid using a single checkbox to
-turn an option off or on. Instead, use an on/off switch.</p>
-
-  <img src="{@docRoot}design/media/switches_checkboxes.png">
-
-
-
-<h2 id="radio-buttons">Radio Buttons</h2>
-
-<a class="notice-developers" href="{@docRoot}guide/topics/ui/controls/radiobutton.html">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>Radio Buttons</p>
-  </div>
-</a>
-
-<p>Radio buttons allow the user to select one option from a set. Use radio buttons for exclusive
-selection if you think that the user needs to see all available options side-by-side. Otherwise,
-consider a spinner, which uses less space.</p>
-
-  <img src="{@docRoot}design/media/switches_radios.png">
-
-
-
-<h2 id="switches">On/off Switches</h2>
-
-<a class="notice-developers" href="{@docRoot}guide/topics/ui/controls/togglebutton.html">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>Toggle Buttons</p>
-  </div>
-</a>
-
-<p>On/off switches toggle the state of a single settings option.</p>
-
-  <img src="{@docRoot}design/media/switches_switches.png">
-
-
diff --git a/docs/html/design/building-blocks/tabs.jd b/docs/html/design/building-blocks/tabs.jd
deleted file mode 100644
index 078de92..0000000
--- a/docs/html/design/building-blocks/tabs.jd
+++ /dev/null
@@ -1,65 +0,0 @@
-page.title=Tabs
-page.tags=tabs,actionbar,navigation,viewpager
-@jd:body
-
-<img src="{@docRoot}design/media/tabs_overview.png">
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/components/tabs.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Tabs<p>
-  </div>
-</a>
-
-<a class="notice-developers" href="{@docRoot}training/implementing-navigation/lateral.html">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>Creating Swipe Views<br>with Tabs</p>
-  </div>
-</a>
-
-<p itemprop="description">Tabs in the action bar make it easy to explore and switch between different views or functional
-aspects of your app, or to browse categorized data sets.</p>
-
-<p>For details on using gestures to move between tabs, see the <a href="{@docRoot}design/patterns/swipe-views.html">Swipe Views</a> pattern.</p>
-
-<h2 id="scrollable">Scrollable Tabs</h2>
-
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-
-<p>Scrolling tab controls can contain a larger number of items than a standard tab control. To navigate
-to the next/previous view, swipe left or right.</p>
-
-  </div>
-  <div class="layout-content-col span-7">
-
-    <video width="400" class="with-shadow play-on-hover" autoplay>
-      <source src="{@docRoot}design/media/tabs_scrolly.mp4" type="video/mp4">
-      <source src="{@docRoot}design/media/tabs_scrolly.webm" type="video/webm">
-      <source src="{@docRoot}design/media/tabs_scrolly.ogv" type="video/ogg">
-    </video>
-    <div class="figure-caption">
-      Scrolling tabs in the Play Store app.
-      <div class="video-instructions-image">&nbsp;</div>
-    </div>
-
-  </div>
-</div>
-
-
-<h2 id="fixed">Fixed Tabs</h2>
-<p>Fixed tabs display all items concurrently. To navigate to a different view, touch the tab, or swipe left or right.</p>
-<p>Fixed tabs are displayed with equal width, based on the width of the widest tab label. If there is insufficient room to display all tabs, the tab labels themselves will be scrollable. For this reason, fixed tabs are best suited for displaying 3 or fewer tabs.</p>
-
-<img src="{@docRoot}design/media/tabs_standard.png">
-<div class="figure-caption">
-  Tabs in Holo Dark &amp; Light.
-</div>
-
-<img src="{@docRoot}design/media/tabs_youtube.png">
-<div class="figure-caption">
-  Tabs in the Google Play Movies app.
-</div>
diff --git a/docs/html/design/building-blocks/text-fields.jd b/docs/html/design/building-blocks/text-fields.jd
deleted file mode 100644
index 19c22f9..0000000
--- a/docs/html/design/building-blocks/text-fields.jd
+++ /dev/null
@@ -1,88 +0,0 @@
-page.title=Text Fields
-page.tags=text,edittext,input
-@jd:body
-
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/components/text-fields.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Text Fields<p>
-  </div>
-</a>
-
-<a class="notice-developers" href="{@docRoot}guide/topics/ui/controls/text.html">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>Text Fields</p>
-  </div>
-</a>
-
-<p itemprop="description">Text fields allow the user to type text into your app. They can be either single line or multi-line.
-Touching a text field places the cursor and automatically displays the keyboard. In addition to
-typing, text fields allow for a variety of other activities, such as text selection (cut, copy,
-paste) and data lookup via auto-completion.</p>
-
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-12">
-
-    <img src="{@docRoot}design/media/text_input_singlevsmultiline.png">
-
-  </div>
-</div>
-
-<h4>Single line and multi line</h4>
-<p>Single-line fields automatically scroll their content to the left as the text input cursor reaches
-the right edge of the input field. Multi-line text fields automatically break to a new line for
-overflow text and scroll vertically when the cursor reaches the lower edge.</p>
-
-<img src="{@docRoot}design/media/text_input_typesandtypedown.png">
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-
-<h4>Text field types</h4>
-<p>Text fields can have different types, such as number, message, or email address. The type determines
-what kind of characters are allowed inside the field, and may prompt the virtual keyboard to
-optimize its layout for frequently used characters.</p>
-
-  </div>
-  <div class="layout-content-col span-6">
-
-<h4>Auto-complete text fields</h4>
-<p>Use auto-complete text fields to present real-time completions or search results in popups, so users
-can enter information more accurately and efficiently.</p>
-
-  </div>
-</div>
-
-<h2 id="text-selection">Text Selection</h2>
-
-<p>Users can select any word in a text field with a long press. This action triggers a text selection
-mode that facilitates extending the selection or choosing an action to perform on the selected text.
-Selection mode includes:</p>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-9">
-
-    <img src="{@docRoot}design/media/text_input_textselection.png">
-
-  </div>
-  <div class="layout-content-col span-4 with-callouts">
-
-<ol>
-<li>
-<h4>Contextual action bar</h4>
-<p>A contextual action bar (CAB) displays the actions available to perform on the selection:
- typically cut, copy, and paste, but apps can insert additional commands as needed.</p>
-</li>
-<li>
-<h4>Selection handles</h4>
-<p>Selection handles can be dragged to select more or less text while remaining in selection mode.</p>
-</li>
-</ol>
-
-  </div>
-</div>
-
diff --git a/docs/html/design/design_toc.cs b/docs/html/design/design_toc.cs
index 63f5cad..85569ef 100644
--- a/docs/html/design/design_toc.cs
+++ b/docs/html/design/design_toc.cs
@@ -1,15 +1,15 @@
 <ul id="nav">
 
   <li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot ?>design/index.html">Get Started</a></div>
+    <div class="nav-section-header"><a href="<?cs var:toroot ?>design/get-started/creative-vision.html">Creative Vision</a></div>
     <ul>
-      <li><a href="<?cs var:toroot ?>design/get-started/creative-vision.html">Creative Vision</a></li>
       <li><a href="<?cs var:toroot ?>design/get-started/principles.html">Design Principles</a></li>
+      <li><a href="<?cs var:toroot ?>design/patterns/new.html">New in Android</a></li>
     </ul>
   </li>
 
   <li class="nav-section">
-    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>design/material/index.html">Material Design</a></div>
+    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>design/material/index.html">Material for Android</a></div>
   </li>
 
   <li class="nav-section">
@@ -43,59 +43,20 @@
   </li>
 
   <li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot ?>design/style/index.html">Style</a></div>
+    <div class="nav-section-header"><a href="<?cs var:toroot ?>design/style/index.html">Pure Android</a></div>
     <ul>
       <li><a href="<?cs var:toroot ?>design/style/devices-displays.html">Devices and Displays</a></li>
-      <li><a href="<?cs var:toroot ?>design/style/themes.html">Themes</a></li>
-      <li><a href="<?cs var:toroot ?>design/style/touch-feedback.html">Touch Feedback</a></li>
-      <li><a href="<?cs var:toroot ?>design/style/metrics-grids.html">Metrics and Grids</a></li>
-      <li><a href="<?cs var:toroot ?>design/style/typography.html">Typography</a></li>
-      <li><a href="<?cs var:toroot ?>design/style/color.html">Color</a></li>
-      <li><a href="<?cs var:toroot ?>design/style/iconography.html">Iconography</a></li>
-      <li><a href="<?cs var:toroot ?>design/style/branding.html">Your Branding</a></li>
-      <li><a href="<?cs var:toroot ?>design/style/writing.html" zh-cn-lang="写作风格">Writing Style</a></li>
-    </ul>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot ?>design/patterns/index.html">Patterns</a></div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>design/patterns/new.html">New in Android</a></li>
-      <li><a href="<?cs var:toroot ?>design/patterns/gestures.html">Gestures</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/app-structure.html">App Structure</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/navigation.html">Navigation</a></li>
-      <li><a href="<?cs var:toroot ?>design/patterns/actionbar.html">Action Bar</a></li>
-      <li><a href="<?cs var:toroot ?>design/patterns/navigation-drawer.html">Navigation Drawer</a></li>
-      <li><a href="<?cs var:toroot ?>design/patterns/multi-pane-layouts.html">Multi-pane Layouts</a></li>
-      <li><a href="<?cs var:toroot ?>design/patterns/swipe-views.html">Swipe Views</a></li>
-      <li><a href="<?cs var:toroot ?>design/patterns/fullscreen.html">Full Screen</a></li>
-      <li><a href="<?cs var:toroot ?>design/patterns/selection.html">Selection</a></li>
-      <li><a href="<?cs var:toroot ?>design/patterns/confirming-acknowledging.html">Confirming &amp; Acknowledging</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/notifications.html">Notifications</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/widgets.html">Widgets</a></li>
-      <li><a href="<?cs var:toroot ?>design/patterns/settings.html">Settings</a></li>
-      <li><a href="<?cs var:toroot ?>design/patterns/help.html">Help</a></li>
+      <li><a href="<?cs var:toroot ?>design/patterns/swipe-views.html">Swipe Views</a></li>
+      <li><a href="<?cs var:toroot ?>design/patterns/fullscreen.html">Full Screen</a></li>
+      <li><a href="<?cs var:toroot ?>design/patterns/confirming-acknowledging.html">Confirming &amp; Acknowledging</a></li>
+      <li><a href="<?cs var:toroot ?>design/patterns/pure-android.html">Pure Android</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/compatibility.html">Compatibility</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/accessibility.html">Accessibility</a></li>
-      <li><a href="<?cs var:toroot ?>design/patterns/pure-android.html">Pure Android</a></li>
-    </ul>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot ?>design/building-blocks/index.html">Building Blocks</a></div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>design/building-blocks/tabs.html">Tabs</a></li>
-      <li><a href="<?cs var:toroot ?>design/building-blocks/lists.html">Lists</a></li>
-      <li><a href="<?cs var:toroot ?>design/building-blocks/grid-lists.html">Grid Lists</a></li>
-      <li><a href="<?cs var:toroot ?>design/building-blocks/scrolling.html">Scrolling</a></li>
-      <li><a href="<?cs var:toroot ?>design/building-blocks/spinners.html">Spinners</a></li>
-      <li><a href="<?cs var:toroot ?>design/building-blocks/buttons.html">Buttons</a></li>
-      <li><a href="<?cs var:toroot ?>design/building-blocks/text-fields.html">Text Fields</a></li>
-      <li><a href="<?cs var:toroot ?>design/building-blocks/seek-bars.html">Seek Bars</a></li>
-      <li><a href="<?cs var:toroot ?>design/building-blocks/progress.html">Progress &amp; Activity</a></li>
-      <li><a href="<?cs var:toroot ?>design/building-blocks/switches.html">Switches</a></li>
-      <li><a href="<?cs var:toroot ?>design/building-blocks/dialogs.html">Dialogs</a></li>
-      <li><a href="<?cs var:toroot ?>design/building-blocks/pickers.html">Pickers</a></li>
+      <li><a href="<?cs var:toroot ?>design/patterns/help.html">Help</a></li>
     </ul>
   </li>
 
@@ -103,8 +64,8 @@
     <div class="nav-section-header empty"><a href="<?cs var:toroot ?>design/downloads/index.html">Downloads</a></div>
   </li>
 
-  <li class="nav-section">
+<!-- <li class="nav-section">
     <div class="nav-section-header empty"><a href="<?cs var:toroot ?>design/videos/index.html">Videos</a></div>
-  </li>
+  </li> -->
 
 </ul>
diff --git a/docs/html/design/devices.jd b/docs/html/design/devices.jd
index c67e585..3d23d07 100644
--- a/docs/html/design/devices.jd
+++ b/docs/html/design/devices.jd
@@ -1,8 +1,9 @@
-page.title=Devices
+page.title=Android devices
 page.viewport_width=970
 section.landing=true
 header.hide=1
 footer.hide=1
+page.image=images/cards/android-devices_2x.jpg
 @jd:body
 
 <style>
diff --git a/docs/html/design/downloads/index.jd b/docs/html/design/downloads/index.jd
index 4111bca..089a4af 100644
--- a/docs/html/design/downloads/index.jd
+++ b/docs/html/design/downloads/index.jd
@@ -3,121 +3,30 @@
 @jd:body
 
 
-<p>You may use these materials without restriction to facilitate your app design
-and implementation.</p>
+<p>For icons, sticker sheets, and other downloadable resources, visit the
+<a href="http://www.google.com/design">Design site</a> or use the links below. </p>
 
-
-<h2 id="stencils">Phone &amp; Tablet Stencils</h2>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
-
-
-<p>Drag and drop your way to beautifully designed Android apps. The stencils feature the
-rich typography, colors, interactive controls, and icons found throughout Android, along with
-phone and tablet outlines to frame your creations. Source files for icons and controls are also
-available.</p>
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <img src="{@docRoot}design/media/downloads_stencils.png">
-
-  </div>
-
-  <div class="layout-content-col span-4">
-    <a class="notice-designers-material"
-      style="width:218px;"
-      href="http://www.google.com/design/spec/resources/layout-templates.html">
-      <div>
-        <h3>Material Design</h3>
-        <p>Layout Templates<p>
-      </div>
-    </a>
-  </div>
-
-  <div class="layout-content-col span-4">
-    <a class="notice-designers-material"
-      style="width:218px;"
-      href="http://www.google.com/design/spec/resources/sticker-sheets-icons.html">
-      <div>
-        <h3>Material Design</h3>
-        <p>Sticker Sheets<p>
-      </div>
-    </a>
-  </div>
-
-  <div class="layout-content-col span-4">
-<p>
-  <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Photoshop Sources');"
-    href="{@docRoot}downloads/design/Android_Design_Stencils_Sources_20131106.zip">Adobe&reg; Photoshop&reg; Stencils and Sources</a>
-</p>
-
-  </div>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:design/landing/resources"
+       data-cardSizes="6x2"
+       data-maxResults="6"></div>
 </div>
 
 
-
-
-
-
-<h2 id="action-bar-icon-pack">Action Bar Icon Pack</h2>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
-
-<p>Action bar icons are graphic buttons that represent the most important actions people can take
-within your app. <a href="{@docRoot}design/style/iconography.html">More on Action Bar Iconography</a></p>
-<p>The download package includes icons that are scaled for various screen densities and suitable for
-use with the Holo Light and Holo Dark themes. The package also includes unstyled icons that you can
-modify to match your theme, plus source files.</p>
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <img src="{@docRoot}design/media/iconography_actionbar_style.png">
-
-  </div>
-
-  <div class="layout-content-col span-4">
-    <a class="notice-designers-material"
-      style="width:218px;"
-      href="http://www.google.com/design/spec/resources/sticker-sheets-icons.html">
-      <div>
-        <h3>Material Design</h3>
-        <p>Sticker Sheets<p>
-      </div>
-    </a>
-  </div>
-
-  <div class="layout-content-col span-4">
-
-<p>
-  <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Action Bar Icons');"
-    href="{@docRoot}downloads/design/Android_Design_Icons_20131106.zip">Action Bar Icon Pack</a>
-</p>
-
-  </div>
-</div>
-
-
-
-
-
 <h2 id="Wear">Android Wear Materials</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
+<div class="cols">
+  <div class="col-5">
   <h4>UI toolkit</h4>
 <p>The toolkit contains detailed specs and measurements of all of the primary Android Wear UI components. Available in PDF and Illustrator formats.</p>
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
 
     <img src="{@docRoot}design/media/downloads_wear_toolkit.png" width="220">
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
   <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Wear Toolkit AI');"
     href="{@docRoot}downloads/design/Android_Wear_Toolkit_20140722.ai">Adobe&reg; Illustrator&reg; Toolkit</a>
 
@@ -127,18 +36,18 @@
 </div>
 
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
+<div class="cols">
+  <div class="col-5">
   <h4>Sample user flow patterns</h4>
 <p>Examples of how to chain together simple Android Wear UI components into common user flow patterns, from simple notifications to complex interactions involving full screen activities.
 </p>
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
 
     <img src="{@docRoot}design/media/downloads_wear_flows.png" width="220">
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
   <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Wear App Patterns AI');"
     href="{@docRoot}downloads/design/Android_Wear_Patterns_20140722.ai">Adobe&reg; Illustrator&reg; App Patterns</a>
   <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Wear App Patterns PDF');"
@@ -147,182 +56,100 @@
 </div>
 
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
+<div class="cols">
+  <div class="col-5">
   <h4>Sample app design mocks</h4>
 <p>Stream cards and UI elements for some example apps in fully editable PSD format.
 </p>
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
 
     <img src="{@docRoot}design/media/downloads_wear_psds.png" width="220">
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
   <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Wear Sample PSD Mocks');"
     href="{@docRoot}downloads/design/Android_Wear_Sample_Assets.zip">Adobe&reg; Photoshop&reg; mocks</a>
   </div>
 </div>
 
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
+<div class="cols">
+  <div class="col-5">
   <h4>Watch faces UI toolkit</h4>
 <p>Detailed specifications and measurements for the the background canvas, notification cards, and
 system indicators.
 </p>
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
 
     <img src="{@docRoot}design/media/downloads_wear_DesignSpec_Icon.png" width="220">
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
   <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Wear Watch Face Specifications');"
     href="{@docRoot}downloads/design/AndroidWear_DesignSpec_11.13.pdf">PDF Toolkit</a>
   </div>
 </div>
 
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
+<div class="cols">
+  <div class="col-5">
   <h4>Slide watch face</h4>
 <p>Example of a watch face design in AI format.
 </p>
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
 
     <img src="{@docRoot}design/media/downloads_wear_Slide_Ai_Icon.png" width="150"
          style="width:150px;margin:0 auto;display:block">
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
   <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Wear Watch Face Example');"
     href="{@docRoot}downloads/design/Slide.ai">Adobe&reg; Illustrator&reg; Design</a>
   </div>
 </div>
 
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
+<div class="cols">
+  <div class="col-5">
   <h4>Slide watch face specifications</h4>
 <p>Design specifications for the Slide watch face in PSD format.
 </p>
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
 
     <img src="{@docRoot}design/media/downloads_wear_Slide_Psd_Icon.png" width="150"
          style="width:150px;margin:0 auto;display:block">
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
   <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Wear Watch Face Example Specifications');"
     href="{@docRoot}downloads/design/Slide.psd">Adobe&reg; Photoshop&reg; Specifications</a>
   </div>
 </div>
 
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
+<div class="cols">
+  <div class="col-5">
   <h4>Watch face icon example</h4>
 <p>Template for creating watch face icons for the carousel on Android Wear devices.
 </p>
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
 
     <img src="{@docRoot}design/media/downloads_wear_Slide_IconExample.png" width="150"
          style="width:150px;margin:0 auto;display:block">
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
   <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Wear Watch Face Example Specifications');"
     href="{@docRoot}downloads/design/Slide_IconExample.psd">Adobe&reg; Photoshop&reg; Icon</a>
   </div>
-</div>
-
-
-
-
-<h2 id="style">Style</h2>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
-
-<h4 id="roboto">Roboto</h4>
-<p>Ice Cream Sandwich introduced a new type family named Roboto, created specifically for the
-requirements of UI and high-resolution screens.</p>
-<p>For Android Wear, Roboto Condensed is the system font and the Regular and Light variants should be used by all Wear apps.</p>
-<p><a href="{@docRoot}design/style/typography.html">More on Roboto</a></p>
-<p><a href="http://www.google.com/fonts/specimen/Roboto" class="external-link">Roboto on Google Fonts</a></p>
-<p><a href="http://www.google.com/fonts/specimen/Roboto+Condensed" class="external-link">Roboto Condensed on Google Fonts</a></p>
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <img src="{@docRoot}design/media/downloads_roboto_specimen_preview.png">
-
-  </div>
-
-  <div class="layout-content-col span-4">
-    <a class="notice-designers-material"
-      style="width:218px;"
-      href="http://www.google.com/design/spec/resources/roboto-noto-fonts.html">
-      <div>
-        <h3>Material Design</h3>
-        <p>Roboto Font<p>
-      </div>
-    </a>
-  </div>
-
-  <div class="layout-content-col span-4">
-
-<p>
-  <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Roboto ZIP');"
-    href="{@docRoot}downloads/design/roboto-1.2.zip">Roboto</a>
-  <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Roboto Specemin Book');"
-    href="{@docRoot}downloads/design/Roboto_Specimen_Book_20131031.pdf">Specimen Book</a>
-</p>
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
-
-<h4>Color</h4>
-<p>In Android's color palette, each color has a corresponding darker
-shade that can be used as a complement when needed.</p>
-<p><a href="{@docRoot}design/style/color.html">More on Color</a></p>
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <img src="{@docRoot}design/media/downloads_color_swatches.png">
-
-  </div>
-
-  <div class="layout-content-col span-4">
-    <a class="notice-designers-material"
-      style="width:218px;"
-      href="http://www.google.com/design/spec/resources/color-palettes.html">
-      <div>
-        <h3>Material Design</h3>
-        <p>Color Palettes<p>
-      </div>
-    </a>
-  </div>
-
-  <div class="layout-content-col span-4">
-
-<p>
-  <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Color Swatches');"
-    href="{@docRoot}downloads/design/Android_Design_Color_Swatches_20120229.zip">Color Swatches</a>
-</p>
-
-  </div>
-</div>
+</div>
\ No newline at end of file
diff --git a/docs/html/design/get-started/creative-vision.jd b/docs/html/design/get-started/creative-vision.jd
index 9261c6e..974d5d0 100644
--- a/docs/html/design/get-started/creative-vision.jd
+++ b/docs/html/design/get-started/creative-vision.jd
@@ -1,4 +1,5 @@
 page.title=Creative Vision
+page.image=images/cards/design-creative-vision_2x.jpg
 @jd:body
 
 <img src="{@docRoot}design/media/creative_vision_main.png">
@@ -6,16 +7,15 @@
 <div class="vspace size-1">&nbsp;</div>
 
 <p itemprop="description">
-  Starting with Ice Cream Sandwich, we focused the design of
-  Android around these three overarching goals, which apply
-  to our core apps as well as the system at large.
-  As you work with Android, consider these goals.
+  Android design is shaped by three overarching goals for users that apply
+  to apps as well as the system at large. As you work with Android,
+  keep these goals in mind.
 </p>
 
 <div class="vspace size-1">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
+<div class="cols">
+  <div class="col-4">
 
 <h4>Enchant me</h4>
 <p>Beauty is more than skin deep. Android apps are sleek and aesthetically pleasing on multiple levels.
@@ -24,7 +24,7 @@
 simplicity and purpose to create a magical experience that is effortless and powerful.</p>
 
   </div>
-  <div class="layout-content-col span-5">
+  <div class="col-5">
 
 <h4>Simplify my life</h4>
 <p>Android apps make life easier and are easy to understand. When people use your app for the first
@@ -35,7 +35,7 @@
 irrelevant flash.</p>
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
 
 <h4>Make me amazing</h4>
 <p>It's not enough to make an app that is easy to use. Android apps empower people to try new things
diff --git a/docs/html/design/get-started/principles.jd b/docs/html/design/get-started/principles.jd
index 73ec3a6..172a4e4 100644
--- a/docs/html/design/get-started/principles.jd
+++ b/docs/html/design/get-started/principles.jd
@@ -14,8 +14,8 @@
 
 <h2 id="enchant-me">Enchant Me</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="delight-me">Delight me in surprising ways</h4>
 <p>A beautiful surface, a carefully-placed animation, or a well-timed sound effect is a joy to
@@ -23,7 +23,7 @@
 force is at hand.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_delight.png">
 
@@ -32,15 +32,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="real-objects-more-fun">Real objects are more fun than buttons and menus</h4>
 <p>Allow people to directly touch and manipulate objects in your app. It reduces the cognitive effort
 needed to perform a task while making it more emotionally satisfying.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_real_objects.png">
 
@@ -49,8 +49,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="make-it-mine">Let me make it mine</h4>
 <p>People love to add personal touches because it helps them feel at home and in control. Provide
@@ -58,7 +58,7 @@
 primary tasks.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_make_it_mine.png">
 
@@ -67,15 +67,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="get-to-know-me">Get to know me</h4>
 <p>Learn peoples' preferences over time. Rather than asking them to make the same choices over and
 over, place previous choices within easy reach.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_get_to_know_me.png">
 
@@ -84,14 +84,14 @@
 
 <h2 id="simplify-my-life">Simplify My Life</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="keep-it-brief">Keep it brief</h4>
 <p>Use short phrases with simple words. People are likely to skip sentences if they're long.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_keep_it_brief.png">
 
@@ -100,15 +100,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="pictures-faster-than-words">Pictures are faster than words</h4>
 <p>Consider using pictures to explain ideas. They get people's attention and can be much more efficient
 than words.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_pictures.png">
 
@@ -117,15 +117,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="decide-for-me">Decide for me but let me have the final say</h4>
 <p>Take your best guess and act rather than asking first. Too many choices and decisions make people
 unhappy. Just in case you get it wrong, allow for 'undo'.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_decide_for_me.png">
 
@@ -134,15 +134,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="only-show-when-i-need-it">Only show what I need when I need it</h4>
 <p>People get overwhelmed when they see too much at once. Break tasks and information into small,
 digestible chunks. Hide options that aren't essential at the moment, and teach people as they go.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_information_when_need_it.png">
 
@@ -151,15 +151,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="always-know-where-i-am">I should always know where I am</h4>
 <p>Give people confidence that they know their way around. Make places in your app look distinct and
 use transitions to show relationships among screens. Provide feedback on tasks in progress.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_navigation.png">
 
@@ -168,8 +168,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="never-lose-my-stuff">Never lose my stuff</h4>
 <p>Save what people took time to create and let them access it from anywhere. Remember settings,
@@ -177,7 +177,7 @@
 easiest thing in the world.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_never_lose_stuff.png">
 
@@ -186,15 +186,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="looks-same-should-act-same">If it looks the same, it should act the same</h4>
 <p>Help people discern functional differences by making them visually distinct rather than subtle.
 Avoid modes, which are places that look similar but act differently on the same input.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_looks_same.png">
 
@@ -203,15 +203,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="interrupt-only-if-important">Only interrupt me if it's important</h4>
 <p>Like a good personal assistant, shield people from unimportant minutiae. People want to stay
 focused, and unless it's critical and time-sensitive, an interruption can be taxing and frustrating.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_important_interruption.png">
 
@@ -220,8 +220,8 @@
 
 <h2 id="make-me-amazing">Make Me Amazing</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="give-me-tricks">Give me tricks that work everywhere</h4>
 <p>People feel great when they figure things out for themselves. Make your app easier to learn by
@@ -229,7 +229,7 @@
 may be a good navigational shortcut.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_tricks.png">
 
@@ -238,8 +238,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="its-not-my-fault">It's not my fault</h4>
 <p>Be gentle in how you prompt people to make corrections. They want to feel smart when they use your
@@ -247,7 +247,7 @@
 If you can fix it behind the scenes, even better.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_error.png">
 
@@ -256,15 +256,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="sprinkle-encouragement">Sprinkle encouragement</h4>
 <p>Break complex tasks into smaller steps that can be easily accomplished. Give feedback on actions,
 even if it's just a subtle glow.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_sprinkle_encouragement.png">
 
@@ -273,8 +273,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="do-heavy-lifting-for-me">Do the heavy lifting for me</h4>
 <p>Make novices feel like experts by enabling them to do things they never thought they could. For
@@ -282,7 +282,7 @@
 only a few steps.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_heavy_lifting.png">
 
@@ -291,15 +291,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="make-important-things-fast">Make important things fast</h4>
 <p>Not all actions are equal. Decide what's most important in your app and make it easy to find and
 fast to use, like the shutter button in a camera, or the pause button in a music player.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_make_important_fast.png">
 
diff --git a/docs/html/design/handhelds/index.jd b/docs/html/design/handhelds/index.jd
index 882b070..81c2c19 100644
--- a/docs/html/design/handhelds/index.jd
+++ b/docs/html/design/handhelds/index.jd
@@ -20,8 +20,8 @@
 
 <div class="vspace size-1">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
+<div class="cols">
+  <div class="col-4">
 
     <img src="{@docRoot}design/media/ui_overview_home_screen.png">
 
@@ -34,7 +34,7 @@
 the Favorites Tray.</p>
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
 
     <img src="{@docRoot}design/media/ui_overview_all_apps.png">
 
@@ -45,7 +45,7 @@
 any Home screen.</p>
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
 
     <img src="{@docRoot}design/media/ui_overview_recents.png">
 
@@ -94,13 +94,13 @@
 interrupting the user. Open the notifications drawer by swiping down on the status bar. Touching a
 notification opens the associated app. <a href="{@docRoot}design/patterns/notifications.html">More on Notifications</a></p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
+<div class="cols">
+  <div class="col-4">
 
     <img src="{@docRoot}design/media/ui_overview_notifications.png">
 
   </div>
-  <div class="layout-content-col span-9">
+  <div class="col-9">
 
     <img src="{@docRoot}design/media/notifications_dismiss.png">
 
@@ -116,13 +116,13 @@
 <h2 id="app">Common App UI</h2>
 
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
     <img src="{@docRoot}design/media/app_structure_drawer.png">
 
   </div>
-  <div class="layout-content-col span-6 with-callouts">
+  <div class="col-6 with-callouts">
 
 <p>A typical Android app uses action bars, and many apps will include a navigation drawer.</p>
 <ol>
diff --git a/docs/html/design/index.jd b/docs/html/design/index.jd
index 47e8d26..1ffb0a3 100644
--- a/docs/html/design/index.jd
+++ b/docs/html/design/index.jd
@@ -1,3 +1,4 @@
+fullpage=true
 page.title=Design
 page.viewport_width=970
 section.landing=true
@@ -6,43 +7,71 @@
 footer.hide=1
 @jd:body
 
-<style>
-#landing-graphic-container {
-  position: relative;
-}
-
-#text-overlay {
-  position: absolute;
-  left: 0;
-  top: 42px;
-  width: 266px;
-
-}
-#hero-image {
-  padding-left:68px;
-}
-</style>
-
-<div id="landing-graphic-container">
-  <div id="text-overlay">
-    <span itemprop="description">Welcome to <strong>Android Design</strong>, your place for
-    learning how to design exceptional Android apps.</span>
-    <br><br>
-    Want to know what <strong>Android 5.0</strong> has for designers? See <a href="{@docRoot}design/patterns/new.html">New in Android</a>.<br><br>
-    <a href="/design/get-started/creative-vision.html" class="landing-page-link">Creative Vision</a>
+<section class="dac-expand dac-hero dac-light">
+  <div class="wrap">
+    <div class="cols dac-hero-content">
+      <div class="col-1of2 col-push-1of2 dac-hero-figure">
+        <img class="dac-hero-image" src="/design/media/hero-material-design.png">
+      </div>
+      <div class="col-1of2 col-pull-1of2">
+        <h1 class="dac-hero-title">Up and running with material design</h1>
+        <p class="dac-hero-description">
+        Android uses a new design metaphor inspired by paper and ink that provides a reassuring
+        sense of tactility. Visit the <a href="http://www.google.com/design/spec/material-design/introduction">material design</a> site for more resources. 
+        </p>
+        <a class="dac-hero-cta" href="https://www.google.com/design/spec/material-design/introduction.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Introducing material design
+        </a><br>
+        <a class="dac-hero-cta" href="https://www.google.com/design/spec/resources/color-palettes.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Downloads for designers
+        </a><br>
+        <a class="dac-hero-cta" href="https://google.com/design/articles/">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Articles
+        </a>
+      </div>
+    </div>
+    <div class="dac-section dac-small">
+      <div class="resource-widget resource-flow-layout col-16"
+           data-query="collection:design/landing/materialdesign"
+           data-cardSizes="6x2"
+           data-maxResults="6"></div>
+    </div>
   </div>
-  <a id="hero-image" href="/design/get-started/creative-vision.html">
-    <img src="{@docRoot}design/media/index_landing_page.png" width="760" height="600" alt=""
-         srcset="{@docRoot}design/media/index_landing_page_2x.png 2x"/>
+</section>
+<div class="wrap dac-offset-parent">
+  <a class="dac-fab dac-scroll-button" data-scroll-button href="#latest">
+    <i class="dac-sprite dac-arrow-down-gray"></i>
   </a>
-
-<div style="background: hsl(8, 70%, 54%); margin: 0; padding: 20px 20px 10px 20px;color: #fff; position: absolute;top: 255px;width: 179px;">
-<h2 style="color: #fff;margin:0 0 10px; font-size:18px" class="norule">Material Design</h2>
-<p>Android 5.0 introduces a design
-metaphor inspired by paper and ink that provides a reassuring sense of tactility.
-</p>
-<p><a class="white" href="{@docRoot}design/material/index.html">Learn more</a></p>
 </div>
+<section class="dac-section dac-gray dac-small dac-invert" id="latest"><div class="wrap">
+  <h2 class="norule">Latest</h2>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:design/landing/latest"
+       data-cardSizes="6x6"
+       data-maxResults="3"></div>
+</div></section>
 
-</div>
+<section class="dac-section dac-light"><div class="wrap">
+  <h1 class="dac-section-title">Pure Android</h1>
+  <div class="dac-section-subtitle">
+    Design around Android's capabilities and conventions to give users the best experience.
+  </div>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:design/landing/pureandroid"
+       data-cardSizes="6x6"
+       data-maxResults="6"></div>
+</div></section>
 
+<section class="dac-section dac-gray"><div class="wrap">
+  <h1 class="dac-section-title">Resources</h1>
+  <div class="dac-section-subtitle">
+    Essential downloads, stencils, and tools to help you create your design.
+  </div>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:design/landing/resources"
+       data-cardSizes="6x2"
+       data-maxResults="6"></div>
+</div></section>
diff --git a/docs/html/design/material/index.jd b/docs/html/design/material/index.jd
index 4d9a1a7..c5893a7 100644
--- a/docs/html/design/material/index.jd
+++ b/docs/html/design/material/index.jd
@@ -1,7 +1,7 @@
-page.title=Material Design
+page.title=Material Design for Android
 page.tags=Material,design
 page.type=design
-page.image=design/material/images/MaterialLight.png
+page.image=images/cards/design-material-for-android_2x.jpg
 
 @jd:body
 
diff --git a/docs/html/design/media/hero-material-design.png b/docs/html/design/media/hero-material-design.png
new file mode 100644
index 0000000..55c4420
--- /dev/null
+++ b/docs/html/design/media/hero-material-design.png
Binary files differ
diff --git a/docs/html/design/patterns/accessibility.jd b/docs/html/design/patterns/accessibility.jd
index b968237..b910294 100644
--- a/docs/html/design/patterns/accessibility.jd
+++ b/docs/html/design/patterns/accessibility.jd
@@ -48,11 +48,11 @@
 <h4>Label visual UI elements meaningfully</h4>
 <p>In your wireframes, <a href="{@docRoot}guide/topics/ui/accessibility/apps.html#label-ui">label functional UI components</a> that have no visible text. Those components might be buttons, icons, tabs with icons, and icons with state (like stars). Developers can use the <code><a href="{@docRoot}guide/topics/ui/accessibility/apps.html#label-ui">contentDescription</a></code> attribute to set the label.</p>
 
-<div class ="layout-content-row">
-    <div class="layout-content-col span-8">
+<div class ="cols">
+    <div class="col-8">
       <img src="{@docRoot}design/media/accessibility_contentdesc.png">
     </div>
-    <div class="layout-content-col span-5 with-callouts">
+    <div class="col-5 with-callouts">
       <ol>
         <li class="value-1">group</li>
         <li class="value-2">all contacts</li>
@@ -95,4 +95,4 @@
   <li>Provide alternatives to affordances that time out</li>
   <li>Use standard framework controls or enable TalkBack for custom controls</li>
   <li>Try it out yourself</li>
-</ul>
\ No newline at end of file
+</ul>
diff --git a/docs/html/design/patterns/actionbar.jd b/docs/html/design/patterns/actionbar.jd
index 5467722..ef02c53 100644
--- a/docs/html/design/patterns/actionbar.jd
+++ b/docs/html/design/patterns/actionbar.jd
@@ -34,8 +34,8 @@
 <p>The action bar is split into four different functional areas that apply to most apps.</p>
 <img src="{@docRoot}design/media/action_bar_basics.png">
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7 with-callouts">
+<div class="cols">
+  <div class="col-7 with-callouts">
 
     <ol>
       <li class="value-1"><h4>App icon</h4>
@@ -57,7 +57,7 @@
     </ol>
 
   </div>
-  <div class="layout-content-col span-6 with-callouts">
+  <div class="col-6 with-callouts">
 
     <ol>
       <li class="value-2"><h4>View control</h4>
@@ -107,8 +107,8 @@
 
 <h2 id="considerations-split-action-bars">Layout Considerations for Split Action Bars</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-8 with-callouts">
+<div class="cols">
+  <div class="col-8 with-callouts">
 
 <p>When splitting up content across multiple action bars, you generally have three possible locations
 for action bar content:</p>
@@ -124,7 +124,7 @@
 <p>To display actions and, if necessary, the action overflow, use the bottom bar.</p>
 
   </div>
-  <div class="layout-content-col span-5">
+  <div class="col-5">
 
     <img src="{@docRoot}design/media/action_bar_pattern_considerations.png">
 
@@ -144,8 +144,8 @@
 
 <p>For guidance on prioritizing actions, use the FIT scheme.</p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
+<div class="cols">
+  <div class="col-4">
 
 <p><strong>F &mdash; Frequent</strong></p>
 <ul>
@@ -155,7 +155,7 @@
 </ul>
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
 
 <p><strong>I &mdash; Important</strong></p>
 <ul>
@@ -164,7 +164,7 @@
 </ul>
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
 
 <p><strong>T &mdash; Typical</strong></p>
 <ul>
@@ -194,8 +194,8 @@
 
 </p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
 
 <h4>Action overflow</h4>
 <p>The action overflow in the action bar provides access to your app's less frequently used actions.
@@ -203,7 +203,7 @@
 display the action overflow when the user presses the key.</p>
 
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
 
     <img src="{@docRoot}design/media/action_bar_pattern_overflow.png">
     <div class="figure-caption">
@@ -285,4 +285,4 @@
 <p>Sometimes it is important to display contextual information for your app that's always visible.
 Examples are the number of unread messages in a messaging inbox view or the Now Playing information
 in a music player. Carefully plan which important information you would like to display and
-structure your action bars accordingly.</p>
\ No newline at end of file
+structure your action bars accordingly.</p>
diff --git a/docs/html/design/patterns/app-structure.jd b/docs/html/design/patterns/app-structure.jd
index 404dd4d..4f3106e 100644
--- a/docs/html/design/patterns/app-structure.jd
+++ b/docs/html/design/patterns/app-structure.jd
@@ -25,13 +25,13 @@
 <p>A typical Android app consists of top level and detail/edit views. If the navigation hierarchy is
 deep and complex, category views connect top level and detail views.</p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-9">
+<div class="cols">
+  <div class="col-9">
 
     <img src="{@docRoot}design/media/app_structure_overview.png">
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
 
 <h4>Top level views</h4>
 <p>The top level of the app typically consists of the different views that your app supports. The views
@@ -57,8 +57,8 @@
 <p>Ask yourself: "What are my typical users most likely going to want to do in my app?", and structure
 your start screen experience accordingly.</p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
+<div class="cols">
+  <div class="col-5">
 
 <h4>Put content forward</h4>
 <p>Many apps focus on the content display. Avoid navigation-only screens and instead let people get to
@@ -66,7 +66,7 @@
 layouts that are visually engaging and appropriate for the data type and screen size.</p>
 
   </div>
-  <div class="layout-content-col span-8">
+  <div class="col-8">
 
     <img src="{@docRoot}design/media/app_structure_market.png">
     <div class="figure-caption">
@@ -80,8 +80,8 @@
 
 <h4>Set up action bars for navigation and actions</h4>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
+<div class="cols">
+  <div class="col-5">
 
   <p>All screens in your app should display action bars to provide consistent navigation and surface
 important actions.</p>
@@ -96,7 +96,7 @@
     </ul>
 
   </div>
-  <div class="layout-content-col span-8">
+  <div class="col-8">
 
     <img src="{@docRoot}design/media/app_structure_gmail.png">
     <div class="figure-caption">
@@ -111,8 +111,8 @@
 <p>The top level communicates your app’s capabilities by introducing the user to the major functional areas. In many cases the top level will consist of multiple views, and you need to make sure that the user can navigate between them efficiently. Android supports a number of view controls for this task. Use the control that best matches your app's navigation needs:</p>
 
 <h4>Fixed tabs</h4>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
 <p><em>Fixed tabs</em> display top-level views concurrently and make it easy to explore and switch between them. They are always visible on the screen, and can't be moved out of the way like scrollable tabs. <em>Fixed tabs</em> should always allow the user to navigate between the views by swiping left or right on the content area.</p>
 <p><strong>Use tabs if</strong>:</p>
 <ul>
@@ -122,7 +122,7 @@
 </ul>
 
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
 
     <img src="{@docRoot}design/media/app_structure_default_tabs.png">
     <div class="figure-caption">
@@ -132,8 +132,8 @@
   </div>
 </div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
 
 <h4>Spinners</h4>
 <p>A <em>spinner</em> is a drop-down menu that allows users to switch between views of your app. </p>
@@ -144,7 +144,7 @@
 </ul>
 
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
 
     <img src="{@docRoot}design/media/app_structure_spinner.png">
     <div class="figure-caption">
@@ -155,8 +155,8 @@
 </div>
 
 <h4>Navigation drawers</h4>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
 <p>A <em>navigation drawer</em> is a slide-out menu that allows users to switch between views of your app. It can hold a large number of items and is accessible from anywhere in your app. Navigation drawers show your app's top-level views, but can also provide navigation to lower-level screens. This makes them particularly suitable for complex apps.</p>
 
 <p><strong>Use navigation drawers if</strong>:</p>
@@ -169,7 +169,7 @@
 </ul>
 
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
     <img src="{@docRoot}design/media/app_structure_drawer.png">
     <div class="figure-caption">
       Navigation drawer from the Keep app.
@@ -196,8 +196,8 @@
 
 <div class="vspace size-1">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-8">
+<div class="cols">
+  <div class="col-8">
 
 <p>If the categories are familiar, predictable, or closely related, use scrolling tabs (where not all
 items are in view simultaneously). Keep the number of scrolling tabs at a manageable level to
@@ -210,7 +210,7 @@
     </div>
 
   </div>
-  <div class="layout-content-col span-5">
+  <div class="col-5">
 
 <p>If the categories in the tabs are not closely related, favor fixed tabs, so that all categories are
 in view at the same time.</p>
@@ -257,14 +257,14 @@
 
 <p>The detail view allows you to view and act on your data. The layout of the detail view depends on the data type being displayed, and therefore differs widely among apps.</p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
+<div class="cols">
+  <div class="col-4">
 
 <h4>Layout</h4>
 <p>Consider the activities people will perform in the detail view and arrange the layout accordingly.</p>
 
   </div>
-  <div class="layout-content-col span-9">
+  <div class="col-9">
 
     <img src="{@docRoot}design/media/app_structure_people_detail.png">
 
diff --git a/docs/html/design/patterns/buttons.jd b/docs/html/design/patterns/buttons.jd
index 2d65b2d..085acec 100644
--- a/docs/html/design/patterns/buttons.jd
+++ b/docs/html/design/patterns/buttons.jd
@@ -19,13 +19,13 @@
   back into view.
 </p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>Lean Back</h4>
     <p>Touch the screen anywhere to bring back system bars. </p>
     <img src="{@docRoot}design/media/fullscreen_leanback.png" style="width:311px;">
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <h4>Immersive</h4>
     <p>Swipe from the any edge of the screen with a hidden bar to bring back system bars. </p>
     <img src="{@docRoot}design/media/fullscreen_immersive_swipe_bottom.png" style="width:160px;float:right">
@@ -69,8 +69,8 @@
   interrupted by accidental touches and swipes.
 </p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <img src="{@docRoot}design/media/fullscreen_immersive_swipe_bottom.png" style="width:160px;float:right">
     <img src="{@docRoot}design/media/fullscreen_immersive_swipe_top.png" style="width:160px">
   </div>
diff --git a/docs/html/design/patterns/compatibility.jd b/docs/html/design/patterns/compatibility.jd
index dfc52c0..2905676f 100644
--- a/docs/html/design/patterns/compatibility.jd
+++ b/docs/html/design/patterns/compatibility.jd
@@ -20,8 +20,8 @@
 
 <h2 id="older-hardware">Adapting Android 4.0 to Older Hardware and Apps</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
 
 <h4>Phones with virtual navigation controls</h4>
 <p>Android apps written for Android 3.0 and later display actions in the action bar. Actions that don't
@@ -30,15 +30,15 @@
 <p>Users access the action overflow by touching it in the action bar.</p>
 
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
 
     <img src="{@docRoot}design/media/compatibility_virtual_nav.png">
 
   </div>
 </div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
 
 <h4>Phones with physical navigation keys</h4>
 <p>Android phones with traditional navigation hardware keys don't display the virtual navigation bar at
@@ -46,15 +46,15 @@
 resulting actions popup has the same style as in the previous example, but is displayed at the bottom of the screen.</p>
 
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
 
     <img src="{@docRoot}design/media/compatibility_physical_buttons.png">
 
   </div>
 </div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
 
 <h4>Legacy apps on phones with virtual navigation controls</h4>
 <p>When you run an app that was built for Android 2.3 or earlier on a phone with virtual navigation
@@ -62,7 +62,7 @@
 can touch the control to display the app's actions in the traditional Android menu styling.</p>
 
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
 
     <img src="{@docRoot}design/media/compatibility_legacy_apps.png">
 
diff --git a/docs/html/design/patterns/confirming-acknowledging.jd b/docs/html/design/patterns/confirming-acknowledging.jd
index d39d32d..201e5a05 100644
--- a/docs/html/design/patterns/confirming-acknowledging.jd
+++ b/docs/html/design/patterns/confirming-acknowledging.jd
@@ -4,12 +4,12 @@
 
 <p>In some situations, when a user invokes an action in your app, it's a good idea to <em>confirm</em> or <em>acknowledge</em> that action through text.</p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <img src="{@docRoot}design/media/confirm_ack_confirming.png">
     <p><strong>Confirming</strong> is asking the user to verify that they truly want to proceed with an action they just invoked. In some cases, the confirmation is presented along with a warning or critical information related to the action that they need to consider.</p>
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="{@docRoot}design/media/confirm_ack_acknowledge.png">
     <p><strong>Acknowledging</strong> is displaying text to let the user know that the action they just invoked has been completed. This removes uncertainty about implicit operations that the system is taking. In some cases, the acknowledgment is presented along with an option to undo the action.</p>
   </div>
@@ -22,14 +22,14 @@
 <img src="{@docRoot}design/media/confirm_ack_flowchart.png">
 
 <h2>Confirming</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>Example: Google Play Books</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_books.png">
     <p>In this example, the user has requested to delete a book from their Google Play library. An <a href="{@docRoot}design/building-blocks/dialogs.html#alerts">alert</a> appears to confirm this action because it's important to understand that the book will no longer be available from any device.</p>
     <p>When crafting a confirmation dialog, make the title meaningful by echoing the requested action.</p>
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
     <h4>Example: Android Beam</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_beam.png">
     <p>Confirmations don't necessarily have to be presented in an alert with two buttons. After initiating Android Beam, the user is prompted to touch the content to be shared (in this example, it's a photo). If they decide not to proceed, they simply move their phone away.</p>
@@ -37,15 +37,15 @@
 </div>
 
 <h2>Acknowledging</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>Example: Abandoned Gmail draft saved</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_draftsave.png">
     <p>In this example, if the user navigates back or up from the Gmail compose screen, something possibly unexpected happens: the current draft is automatically saved. An acknowledgment in the form of a toast makes that apparent. It fades after a few seconds.</p>
     <p>Undo isn't appropriate here because saving was initiated by the app, not the user. And it's quick and easy to resume composing the message by navigating to the list of drafts.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <h4>Example: Gmail conversation deleted</h4>
     <img src="{@docRoot}design/media/confirm_ack_draft_deleted.png">
     <p>After the user deletes a conversation from the list in Gmail, an acknowledgment appears with an undo option. The acknowledgment remains until the user takes an unrelated action, such as scrolling the list.</p>
@@ -53,14 +53,14 @@
 </div>
 
 <h2>No Confirmation or Acknowledgment</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>Example: +1'ing</h4>
     <img style="padding: 33px 0 30px;" src="{@docRoot}design/media/confirm_ack_ex_plus1.png">
     <p><strong>Confirmation is unnecessary</strong>. If the user +1'd by accident, it's not a big deal. They can just touch the button again to undo the action.</p>
     <p><strong>Acknowledgment is unnecessary</strong>. The user will see the +1 button bounce and turn red. That's a very clear signal.</p>
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
     <h4>Example: Removing an app from the Home Screen</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_removeapp.png">
     <p><strong>Confirmation is unnecessary</strong>. This is a deliberate action: the user must drag and drop an item onto a relatively large and isolated target. Therefore, accidents are highly unlikely. But if the user regrets the decision, it only takes a few seconds to bring it back again.</p>
diff --git a/docs/html/design/patterns/fullscreen.jd b/docs/html/design/patterns/fullscreen.jd
index 624d44c..1c95f210 100644
--- a/docs/html/design/patterns/fullscreen.jd
+++ b/docs/html/design/patterns/fullscreen.jd
@@ -19,13 +19,13 @@
   back into view.
 </p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>Lean Back</h4>
     <p>Touch the screen anywhere to bring back system bars. </p>
     <img src="{@docRoot}design/media/fullscreen_leanback.png" style="width:311px;">
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <h4>Immersive</h4>
     <p>Swipe from the any edge of the screen with a hidden bar to bring back system bars. </p>
     <img src="{@docRoot}design/media/fullscreen_immersive_swipe_bottom.png" style="width:160px;float:right">
@@ -69,8 +69,8 @@
   interrupted by accidental touches and swipes.
 </p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <img src="{@docRoot}design/media/fullscreen_immersive_swipe_bottom.png" style="width:160px;float:right">
     <img src="{@docRoot}design/media/fullscreen_immersive_swipe_top.png" style="width:160px">
   </div>
diff --git a/docs/html/design/patterns/gestures.jd b/docs/html/design/patterns/gestures.jd
deleted file mode 100644
index ada0735..0000000
--- a/docs/html/design/patterns/gestures.jd
+++ /dev/null
@@ -1,135 +0,0 @@
-page.title=Gestures
-page.tags=gesture,input,touch
-@jd:body
-
-<a class="notice-designers-material"
-   href="http://www.google.com/design/spec/patterns/gestures.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Gestures<p>
-  </div>
-</a>
-
-<p>Gestures allow users to interact with your app by manipulating the screen objects you provide. The
-following table shows the core gesture set that is supported in Android.</p>
-
-<div class="vspace size-2">&nbsp;</div>
-
-<div class="layout-content-row">
-
-  <div class="layout-content-col span-4">
-    <img src="{@docRoot}design/media/gesture_touch.png">
-    <h4>Touch</h4>
-    <p>Triggers the default functionality for a given item.</p>
-    <ul>
-      <li class="no-bullet with-icon action">
-        <h4>Action</h4>
-        <p>Press, lift</p></li>
-    </ul>
-  </div>
-
-  <div class="layout-content-col span-4">
-    <img src="{@docRoot}design/media/gesture_longtouch.png">
-    <h4>Long press</h4>
-    <p>Enters data selection mode. Allows you to select one or more items in a view and act upon
-    the data using a contextual action bar. Avoid using long press for showing contextual menus.</p>
-    <ul>
-      <li class="no-bullet with-icon action">
-        <h4>Action</h4>
-        <p>Press, wait, lift</p></li>
-    </ul>
-  </div>
-
-  <div class="layout-content-col span-4">
-    <img src="{@docRoot}design/media/gesture_swipe.png">
-    <h4>Swipe or drag</h4>
-    <p>Scrolls overflowing content, or navigates between views in the same hierarchy. Swipes are
-    quick and affect the screen even after the finger is picked up. Drags are slower and more precise,
-    and the screen stops responding when the finger is picked up.</p>
-    <ul>
-      <li class="no-bullet with-icon action">
-        <h4>Action</h4>
-        <p>Press, move, lift</p></li>
-    </ul>
-  </div>
-
-</div>
-
-<div class="vspace size-2">&nbsp;</div>
-
-<div class="layout-content-row">
-
-  <div class="layout-content-col span-4">
-    <img src="{@docRoot}design/media/gesture_drag.png">
-    <h4>Long press drag</h4>
-    <p>Rearranges data within a view, or moves data into a container (e.g. folders on Home Screen).</p>
-    <ul>
-      <li class="no-bullet with-icon action">
-        <h4>Action</h4>
-        <p>Long press, move, lift</p></li>
-    </ul>
-  </div>
-
-  <div class="layout-content-col span-4">
-    <img src="{@docRoot}design/media/gesture_doubletouch.png">
-    <h4>Double touch </h4>
-    <p> Scales up a standard amount around the target with each repeated gesture until reaching
-    maximum scale. For nested views, scales up the smallest targetable view, or returns it to
-    its original scale. Also used as a secondary gesture for text selection.</p>
-    <ul>
-      <li class="no-bullet with-icon action">
-        <h4>Action</h4>
-        <p>Two touches in quick succession</p>
-      </li>
-    </ul>
-  </div>
-
-  <div class="layout-content-col span-4">
-    <img src="{@docRoot}design/media/gesture_doubletouchdrag.png">
-    <h4>Double touch drag</h4>
-    <p>Scales content by pushing away or pulling closer, centered around gesture.</p>
-    <ul>
-      <li class="no-bullet with-icon action">
-        <h4>Action</h4>
-        <p>A single touch followed in quick succession by a drag up or down:</p>
-        <ul style="padding-left:1.5em;list-style-type:disc;">
-          <li>Dragging up decreases content scale</li>
-          <li>Dragging down increases content scale</li>
-          <li>Reversing drag direction reverses scaling.</li>
-        </ul>
-      </li>
-    </ul>
-  </div>
-
-</div>
-
-
-<div class="vspace size-2">&nbsp;</div>
-
-<div class="layout-content-row">
-
-  <div class="layout-content-col span-4">
-    <img src="{@docRoot}design/media/gesture_pinchopen.png" style="margin-left:-4px">
-    <h4>Pinch open</h4>
-    <p>Zooms into content.</p>
-    <ul>
-      <li class="no-bullet with-icon action">
-        <h4>Action</h4>
-        <p>2-finger press, move outwards, lift</p></li>
-    </ul>
-  </div>
-
-  <div class="layout-content-col span-4">
-    <img src="{@docRoot}design/media/gesture_pinchclose.png">
-    <h4>Pinch close</h4>
-    <p>Zooms out of content.</p>
-    <ul>
-      <li class="no-bullet with-icon action">
-        <h4>Action</h4>
-        <p>2-finger press, move inwards, lift</p>
-      </li>
-    </ul>
-  </div>
-
-</div>
-
diff --git a/docs/html/design/patterns/help.jd b/docs/html/design/patterns/help.jd
index 97949e2..6ef155a 100644
--- a/docs/html/design/patterns/help.jd
+++ b/docs/html/design/patterns/help.jd
@@ -21,8 +21,8 @@
 <em>To teach high value functionality that's only available through a gesture.</em></p>
 
 <p>For example, we use help content to teach users how to place apps on their Home screen. This functionality is:</p>
-<div class="layout-content-row">
-  <div class="layout-content-col span-8">
+<div class="cols">
+  <div class="col-8">
     <ul>
       <li><strong>High value</strong>
       <p style="margin-top:0;">Without it, users wouldn't be able to customize the most frequently visited Android screen to meet their needs.</p></li>
@@ -31,7 +31,7 @@
     </ul>
     <p>However, not all high value gesture-only functionality needs a tutorial. For example, don't teach users how to scroll content. They already know how because it's a fundamental, system-wide interaction.</p>
   </div>
-  <div class="layout-content-col span-5">
+  <div class="col-5">
     <img src="{@docRoot}design/media/help_cling.png">
     <div class="figure-caption">
       The first time each user visits the All Apps screen, a semi-transparent overlay appears to teach an important gesture.
@@ -44,11 +44,11 @@
 
 <p>On every screen in your app, offer help in the <a href="{@docRoot}design/patterns/actionbar.html">action overflow</a>. Always make it the very last item in the menu and label it "Help".</p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
     <img src="{@docRoot}design/media/help_overflow.png">
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="{@docRoot}design/media/help_solo_overflow.png">
     <div class="figure-caption">
       Even if your screen has no other action overflow items, "Help" should appear there and not be promoted to the action bar.
@@ -67,28 +67,28 @@
 
 <p>When someone chooses "Help":</p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
+<div class="cols">
+  <div class="col-4">
     <img src="{@docRoot}design/media/help_dont.png">
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
     <img src="{@docRoot}design/media/help_better.png">
   </div>
-  <div class="layout-content-col span-5">
+  <div class="col-5">
     <img src="{@docRoot}design/media/help_evenbetter.png">
   </div>  
 </div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
+<div class="cols">
+  <div class="col-4">
     <h4 class="do-dont-label bad">Don't</h4>
     <p>Present a dialog asking them to choose between help and other options.</p>
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
     <h4 class="do-dont-label good">Better</h4>
     <p>Immediately launch a web browser with help content. Place other options in a footer.</p>
   </div>
-  <div class="layout-content-col span-5">
+  <div class="col-5">
     <h4 class="do-dont-label good">Even Better</h4>
     <p>Build a help screen in your app and offer other options in the action bar. For example, you could let users contact you with questions or feedback through an action button. The action overflow is the ideal place for non-help information that users rarely need.</p>
     <p>This requires more development work than launching a web browser, but it's a nicer experience for users because they don't leave your app to get the help they need and doesn't require a network connection.</p>
diff --git a/docs/html/design/patterns/index.jd b/docs/html/design/patterns/index.jd
deleted file mode 100644
index e091a29..0000000
--- a/docs/html/design/patterns/index.jd
+++ /dev/null
@@ -1,30 +0,0 @@
-page.title=Patterns
-header.justLinks=1
-footer.hide=1
-@jd:body
-
-<style>
-#landing-graphic-container {
-  position: relative;
-}
-
-#text-overlay {
-  position: absolute;
-  left: 0;
-  top: 492px;
-  width: 200px;
-}
-</style>
-
-<div id="landing-graphic-container">
-  <div id="text-overlay">
-    <span itemprop="description">Design apps that behave in a consistent, predictable
-    fashion.</span>
-    <br><br>
-    <a href="{@docRoot}design/patterns/new.html" class="landing-page-link">New in Android</a>
-  </div>
-
-  <a href="{@docRoot}design/patterns/new.html">
-    <img src="{@docRoot}design/media/patterns_landing.png">
-  </a>
-</div>
diff --git a/docs/html/design/patterns/multi-pane-layouts.jd b/docs/html/design/patterns/multi-pane-layouts.jd
deleted file mode 100644
index dbe7d01..0000000
--- a/docs/html/design/patterns/multi-pane-layouts.jd
+++ /dev/null
@@ -1,130 +0,0 @@
-page.title=Multi-pane Layouts
-page.tags="tablet","navigation","layout","fragment"
-page.metaDescription=Design guide with examples of how to flatten navigation and provide improved layout across the range of Android devices.
-
-@jd:body
-
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/layout/structure.html#structure-ui-regions">
-  <div>
-    <h3>Material Design</h3>
-    <p>UI Regions and Guidance<p>
-  </div>
-</a>
-
-<a class="notice-developers" href="{@docRoot}training/basics/fragments/index.html">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>Building a Dynamic UI with Fragments</p>
-  </div>
-</a>
-
-<p>When writing an app for Android, keep in mind that Android devices
-come in many different screen sizes and types. Make sure that your app consistently provides a
-balanced and aesthetically pleasing layout by adjusting its content to varying screen sizes and
-orientations.</p>
-
-<p><em>Panels</em> are a great way for your app to achieve this. They allow you to combine multiple views into
-one compound view when a lot of horizontal screen real estate is available and by splitting them up
-when less space is available.</p>
-<h2 id="combining-views">Combining Multiple Views Into One</h2>
-
-<p>On smaller devices your content is typically divided into a master grid or list view and a detail
-view. Touching an item in the master view opens a different screen showing that item's detail
-information.</p>
-
-<img src="{@docRoot}design/media/multipane_views.png">
-
-<p>Because tablets have more screen real estate than phones, you can use panels to combine the related
-list and detail views into a single compound view. This uses the additional space more efficiently
-and makes navigating the app easier. </p>
-
-<img src="{@docRoot}design/media/multipane_view_tablet.png">
-
-<p>In general, use the pane on the right to present more information about the item you selected in the
-left pane. Make sure to keep the item in the left pane selected in order to establish the
-relationship between the panels.</p>
-<h2 id="orientation">Compound Views and Orientation Changes</h2>
-
-<p>Screens should strive to have the same functionality regardless of orientation. If you use a compound view in
-one orientation, try not to split it up when the user rotates the screen. There are several techniques
-you can use to adjust the layout after orientation change while keeping functional parity intact.</p>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-8">
-
-    <img src="{@docRoot}design/media/multipane_stretch.png">
-
-  </div>
-  <div class="layout-content-col span-5">
-
-<h4>Stretch/compress</h4>
-<p>Adjust the column width of your left pane to achieve a balanced layout in both orientations.</p>
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-8">
-
-    <img src="{@docRoot}design/media/multipane_stack.png">
-
-  </div>
-  <div class="layout-content-col span-5">
-
-<h4>Stack</h4>
-<p>Rearrange the panels on your screen to match the orientation.</p>
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-8">
-
-    <img src="{@docRoot}design/media/multipane_expand.png">
-
-  </div>
-  <div class="layout-content-col span-5">
-
-<h4>Expand/collapse</h4>
-<p>When the device rotates, collapse the left pane view to only show the most important information.</p>
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-8">
-
-    <img src="{@docRoot}design/media/multipane_show.png">
-
-  </div>
-  <div class="layout-content-col span-5">
-
-<h4>Show/hide</h4>
-<p>If your screen cannot accommodate the compound view on rotation show the right pane in full screen view on rotation to portrait. Use the Up icon in action bar to show the parent screen.</p>
-
-  </div>
-</div>
-
-
-
-
-<h2 id="checklist">Checklist</h2>
-
-<ul>
-<li>
-<p>Plan in advance on how your app scales to different screen sizes and screen orientations.</p>
-</li>
-<li>
-<p>Identify the most appropriate method for the panels in your compound views to reorganize
-  themselves when screen orientation changes.</p>
-</li>
-<li>
-<p>Look for opportunities to consolidate your views into multi-panel compound views.</p>
-</li>
-<li>
-<p>Make sure that your screens try to provide functional parity after the screen orientation
-  changes.</p>
-</li>
-</ul>
diff --git a/docs/html/design/patterns/navigation-drawer.jd b/docs/html/design/patterns/navigation-drawer.jd
deleted file mode 100644
index dbac459..0000000
--- a/docs/html/design/patterns/navigation-drawer.jd
+++ /dev/null
@@ -1,346 +0,0 @@
-page.title=Navigation Drawer
-page.tags=DrawerLayout,SlidingPaneLayout
-@jd:body
-
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/layout/structure.html#structure-side-nav">
-  <div>
-    <h3>Material Design</h3>
-    <p>Side Nav<p>
-  </div>
-</a>
-
-<a class="notice-developers" href="{@docRoot}training/implementing-navigation/nav-drawer.html">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>Creating a Navigation Drawer</p>
-  </div>
-</a>
-
-
-<p>The navigation drawer is a panel that transitions in from the left edge of the screen and
-displays the app’s main navigation options.</p>
-
-
-<h4>Displaying the navigation drawer</h4>
-
-<p>The user can bring the navigation drawer onto the screen by swiping from the left edge of the
-screen or by touching the application icon on the action bar.</p>
-
-<p>As the navigation drawer expands, it overlays the content but not the action bar. When the
-drawer is fully extended, the action bar adjusts its content by replacing the current action
-bar title with the app name and removing all actions that are contextual to the view underneath
-the navigation drawer. The overflow menu with the standard action items for Settings and Help
-remains visible.</p>
-
-<img src="{@docRoot}design/media/navigation_drawer_overview.png">
-<div class="figure-caption">
-  The user can open the drawer panel by touching the navigation drawer indicator.
-</div>
-
-<p>Because they are transient, navigation drawers make views less cluttered. You can also use
-them at deeper levels in the navigation hierarchy, allowing users to switch to your app's most
-important screens from anywhere in the app.</p>
-
-<img src="{@docRoot}design/media/navigation_drawer_open_from_lower.png">
-<div class="figure-caption">
-  Open the drawer from anywhere in your app by swiping from the left edge of the screen.
-</div>
-
-
-<h4>Dismissing the navigation drawer</h4>
-
-<p> When the navigation drawer is expanded, the user can dismiss it in one of four ways: </p>
-<ul>
-  <li>Touching the content outside the navigation drawer</li>
-  <li>Swiping to the left anywhere on the screen (including edge swipe from right)</li>
-  <li>Touching the app icon/title in the action bar</li>
-  <li>Pressing Back</li>
-</ul>
-
-
-<h2 id="WhenToUse"> When to Use the Navigation Drawer </h2>
-
-<p> The navigation drawer is not a general replacement for top-level navigation via spinners
-or tabs. The structure of your app should guide your choice of which pattern to use for
-top-level switching. For more information on top-level switching mechanisms, see the
-<a href="{@docRoot}design/patterns/app-structure.html">Application Structure</a> design pattern.</p>
-<p> Here are some examples of where navigation drawers work best:</p>
-
-<h4>More than 3 top-level views</h4>
-<p> Navigation drawers are great for displaying a large number of navigation targets
-concurrently. Use the navigation drawer if you have more than 3 unique top-level views.
-If not, use fixed tabs for top-level organization to ease discovery and interaction.</p>
-
-<h4>Cross-navigation from lower levels</h4>
-<p> If your app requires cross-navigating between lower-level screens, consider using the
-navigation drawer. Because it is accessible from anywhere in the app, the drawer enables
-efficient navigation from lower-level screens to other important places in your app.</p>
-
-<img src="{@docRoot}design/media/navigation_drawer_cross_nav.png">
-<div class="figure-caption">
-  The navigation drawer makes cross-navigation at lower levels possible.
-</div>
-
-
-<h4>Deep navigation branches</h4>
-<p> If you have particularly deep branches, navigating to the top-level of your app can become
-repetitive and cumbersome with Up and Back alone. Since navigation drawers are accessible from
-anywhere in the app, navigation up to the top level is faster and more efficient.</p>
-
-<img src="{@docRoot}design/media/navigation_drawer_quick_to_top.png">
-<div class="figure-caption">
-  The navigation drawer allows for quick jumps to the top-level of your app, removing the need
-  for repetitive Back or Up sequences.
-</div>
-
-
-<h2 id="Hubs">Navigation Hubs</h2>
-
-<p>The navigation drawer is a reflection of your app’s structure and displays its major
-navigation hubs. Think of navigation hubs as those places in your app that a user will want
-to visit frequently or use as a jumping-off point to other parts of the app.
-At a minimum, the navigation hubs are the top-level views, since they correspond to your app’s
-major functional areas.</p>
-<p> If your app’s structure is deep, you can add screens from lower levels that your users will
-likely visit often and make those navigation hubs as well.</p>
-
-<img src="{@docRoot}design/media/navigation_drawer_navigation_hubs.png">
-<div class="figure-caption">
-  The navigation drawer contains all of your app's navigation hubs. Include your top level
-  screens as well as important lower-level screens.
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-8">
-  <p> To facilitate access to the navigation drawer on navigation hubs, all screens that
-  correspond to an entry in your navigation drawer should show the navigation drawer indicator
-  next to the application icon in the action bar. Touching the app icon causes the navigation
-  drawer to slide in from the left. </p>
-  <p> All other lower-level screens show the traditional Up indicator next to the application
-  icon. The drawer is still accessible with an edge-swipe, but is not featured in the action bar.</p>
-  </div>
-  <div class="layout-content-col span-5">
-    <img src="{@docRoot}design/media/navigation_drawer_indicator_big.png">
-    <div class="figure-caption">
-    App icon with navigation drawer indicator.
-  </div>
-  </div>
-</div>
-
-
-<h2 id="Content">Content of the Navigation Drawer</h2>
-
-<p> Keep the content of the navigation drawer focused on app navigation. Expose the navigation
-hubs of your app as list items inside the navigation drawer - one item per row.
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-8">
-  <h4>Titles, icons, and counters</h4>
-  <p> You can structure navigation targets by adding titles. The titles are not interactive,
-  but just organize navigation targets into functional topics. If you have many navigation
-  targets, use titles to orient the user within the drawer.</p>
-  <p> Navigation targets can have optional leading icons as well as trailing counters. Use
-  the counters to inform users about a changed state of data in the corresponding view.</p>
-  </div>
-  <div class="layout-content-col span-5">
-  <img src="{@docRoot}design/media/navigation_drawer_titles_icons.png">
-  <div class="figure-caption">
-    Use titles and icons to organize your drawer.
-  </div>
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-8">
-  <img src="{@docRoot}design/media/navigation_drawer_collapse.png">
-  <div class="figure-caption">
-    Collapsible navigation items are split. Use the left side for navigation and the right
-    to collapse and expand items.
-    </div>
-  </div>
-  <div class="layout-content-col span-5">
-  <h4>Collapsible navigation items</h4>
-  <p>If you have many views with some subordinate to others, consider collapsing them into one
-  expandable item to conserve space.
-  The parent in the navigation drawer then turns into a split item. The left side allows
-  navigation to the parent item’s view, and the right side collapses or expands the list of
-  child items. </p>
-  <p> At launch, the initial state of the collapsible items is up to you. As a rule, all
-  top-level view entries of the navigation drawer should be visible. If you have many collapsible
-  items, consider collapsing all items to allow the user to see the top-level views in their
-  entirety.</p>
-  <p> When the user opens the drawer from a lower-level screen, expand the associated branch
-  of the top-level view to give a stronger sense of place and highlight navigation opportunities
-  close to the user’s current
-  location in the app.</p>
-  </div>
-</div>
-
-
-<h2 id="ActionBar">Navigation Drawers and Action Bars</h2>
-
-<p> When the user expands the navigation drawer, the task focus switches to selecting an item
-from the drawer. Because the drawer does not overlay the action bar, users may not realize that
-the items in the action bar do not pertain to the navigation drawer. </p>
-<p> To reduce confusion, adjust the content of the action bar to the following, once the drawer
-is fully expanded:</p>
-<ul>
-  <li>App icon</li>
-  <li>App name</li>
-  <li>Remove actions from the action bar that are contextual to the underlying view (such as
-  Create new, Refresh). You may retain actions with global scope, such as “Search”.</li>
-  <li>Overflow menu with expected navigation targets, such as Settings and Help.</li>
-</ul>
-
-<img src="{@docRoot}design/media/navigation_drawer_open_overflow.png">
-<div class="figure-caption">
-  Clean up the action bar when the drawer is fully expanded. Remove actions that are not needed
-  and display your app's name in the title area.
-</div>
-
-<h4>Actions</h4>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-  <img src="{@docRoot}design/media/navigation_drawer_nav_and_actions.png">
-    <div class="figure-caption">
-    Keep actions on the right side of the action bar and in the overflow
-  </div>
-  </div>
-  <div class="layout-content-col span-6">
-  <p> Don’t place actions in the navigation drawer. Actions belong in the action bar, and the
-  user expects to see them there. Keep in mind that not all applications use the navigation
-  drawer pattern. It may be tempting to expose all your app’s capabilities in a single place,
-  but keep the bigger picture in mind. Place your actions where all apps display them.</p>
-  </div>
-</div>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-  <p> This also applies to common navigation targets, such as access to Help or the app’s
-  Settings. As per style guide convention Help and Settings are always located in the action
-  overflow.</p>
-  </div>
-  <div class="layout-content-col span-6">
-  <img src="{@docRoot}design/media/navigation_drawer_settings_help.png">
-    <div class="figure-caption">
-    Keep Help and Settings in the overflow.
-  </div>
-  </div>
-</div>
-
-
-<h4>Contextual action bars</h4>
-<p> Sometimes the user will be in a state where a contextual action bar (CAB) appears instead
-of the app’s action bar. This typically happens when the user selects text or selects multiple
-items after a press-and-hold gesture. While the CAB is visible, you should still allow the
-user to open the navigation drawer using an edge swipe. However, replace the CAB with the
-standard action bar while the navigation drawer is open. When the user dismisses the drawer,
-re-display the CAB.</p>
-
-<img src="{@docRoot}design/media/navigation_drawer_CAB.png">
-<div class="figure-caption">
-  Hide contextual action bars while the drawer is visible.
-</div>
-
-<p>If the user navigates away from a view with selected content, deselect the content before
-before navigating to the new view.</p>
-
-
-<h2 id="Interaction">Interaction Details</h2>
-
-<h4>Introduce the user to the drawer at first use</h4>
-<p> Upon first launch of your app, introduce the user to the navigation drawer by
-automatically opening it. This ensures that users know about the navigation drawer and prompts
-them to learn about the structure of your app by exploring its content. Continue showing the
-drawer upon subsequent launches until the user actively expands the navigation drawer manually.
-Once you know that the user understands how to open the drawer, launch the app with the
-navigation drawer closed. </p>
-
-<img src="{@docRoot}design/media/navigation_drawer_first_run.png">
-<div class="figure-caption">
-  At first use, show the navigation drawer automatically to help the user learn the
-  functionality and structure of your app.
-</div>
-
-<h4>Give the user a quick peek</h4>
-<p> If the user touches the very left edge of the screen (within 20 dp from the left), have the
-drawer peek out as soon as the finger makes contact with the display. This promotes accidental
-discovery and provides richer feedback. </p>
-
-<img src="{@docRoot}design/media/navigation_drawer_peek.png">
-<div class="figure-caption">
-  The navigation drawer peeks out when the user touches the very left edge of the screen.
-</div>
-
-<h4>Highlights</h4>
-<p> When you open the navigation drawer from a screen that is represented inside the drawer,
-highlight its entry in the drawer. Vice versa, if you open the drawer from a screen that is
-not listed in the drawer, none of the items of the drawer should be highlighted.</p>
-
-
-<h2 id="ImpactOnNav">Impact of Drawer on Overall App Navigation</h2>
-
-<p>The navigation drawer is an alternative to other top-level navigation patterns. To make apps
-with navigation drawers work consistently with apps that use a tab or spinner pattern, remember
-that all navigation requirements for system Back and Up apply.</p>
-<p>Pay special attention to the following situations:</p>
-
-<h4>System Back at the top level of the app</h4>
-<p>Touching System Back at the app’s top level never opens the navigation drawer. Instead,
-System Back behaves according to the navigation rules for the top level, such as navigating
-to the previous app within the task or navigating to the Home screen.</p>
-
-<img src="{@docRoot}design/media/navigation_drawer_top_out.png">
-<div class="figure-caption">
-  System Back does not show the drawer, but behaves according to the navigation rules for
-  the top level.
-</div>
-
-<h4>System Back after cross navigation to lower hierarchy levels</h4>
-<p>If the user navigates to a lower hierarchy screen from the navigation drawer and the screen
-has a direct parent, then the Back stack is reset and Back points to the target screen’s parent.
-This Back behavior is the same as when a user navigates into an app from a notification.</p>
-
-<img src="{@docRoot}design/media/navigation_drawer_reset_backstack.png">
-<div class="figure-caption">
-  Reset the Back stack if your lower-level navigation target has direct parents.
-</div>
-
-
-<h2 id="Style">Style</h2>
-
-<p>The width of the navigation drawer depends on the content you want to display, but should be
-between a minimum of 240 dp and a maximum of 320 dp. The height of the individual line items
-should not fall below 48 dp. See the layout guideline below for recommendations on padding and
-spacing.</p>
-
-<img src="{@docRoot}design/media/navigation_drawer_layout.png">
-<div class="figure-caption">
-  Layout guidelines for the navigation drawer.
-</div>
-
-
-<p>Pick the drawer background to best match your app’s theme. See the following examples
-for a Holo light and a Holo dark themed drawer.</p>
-
-<img src="{@docRoot}design/media/navigation_drawer_holo_dark_light.png">
-<div class="figure-caption">
-  Navigation drawers in Holo light and Holo dark themed apps.
-</div>
-
-
-<h2 id="Checklist">Navigation Drawer Checklist</h2>
-
-<p>Even if you already support a similar navigation drawer, update your drawer to this
-pattern to make sure that:</p>
-<ul>
-  <li>The action bar remains in place and adjusts its content.</li>
-  <li>Your navigation drawer overlays the content.</li>
-  <li>Any view represented in the drawer has a navigation drawer indicator in its action bar
-  that allows the drawer to be opened by touching the app icon.</li>
-  <li>You take advantage of the new visual drawer transition.</li>
-  <li>Any view not represented in the drawer maintains the traditional Up indicator in its action bar.</li>
-  <li>You stay in sync with the general navigation patterns for Up and Back.</li>
-</ul>
-
diff --git a/docs/html/design/patterns/new.jd b/docs/html/design/patterns/new.jd
index 1523cea..47b05b2 100644
--- a/docs/html/design/patterns/new.jd
+++ b/docs/html/design/patterns/new.jd
@@ -1,5 +1,6 @@
 page.title=New in Android
 page.tags=KitKat,Android 4.4
+page.image=images/cards/design-new-in-android_2x.jpg
 @jd:body
 
 
@@ -92,8 +93,8 @@
 <h3>
   Gestures
 </h3>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
 <p>
   The updated <a href="{@docRoot}design/patterns/gestures.html">Gestures</a>
   page covers new and updated gestures introduced in Android KitKat:
@@ -101,7 +102,7 @@
   gestures are used for changing the viewing size of content.
 </p>
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
     <img src="{@docRoot}design/media/gesture_doubletouch.png">
       <img src="{@docRoot}design/media/gesture_doubletouchdrag.png">
   </div>
@@ -111,8 +112,8 @@
 <h2>Android 4.1 Jelly Bean</h2>
 
 <h4>Notifications</h4>
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
     <p>Notifications have received some notable enhancements in Android 4.1:</p>
     <ul>
       <li>Users can act on notifications immediately from the drawer</li>
@@ -126,7 +127,7 @@
     href="{@docRoot}design/patterns/notifications.html">Notifications</a> page for
     more details.</p>
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="{@docRoot}design/media/new_notifications.png">
   </div>
 </div>
@@ -134,8 +135,8 @@
 <div class="vspace size-2">&nbsp;</div>
 
 <h4>Resizable Application Widgets</h4>
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
     <p>Widgets are an essential aspect of home screen customization, allowing
     "at-a-glance" views of an app's most important data and functionality right from
     the user's home screen. Android 4.1 introduces improved App Widgets that can
@@ -152,7 +153,7 @@
     href="{@docRoot}design/patterns/widgets.html">Application Widgets</a> page has useful
     details about widget types, limitations, and design considerations.</p>
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="{@docRoot}design/media/new_widgets.png">
   </div>
 </div>
@@ -160,8 +161,8 @@
 <div class="vspace size-2">&nbsp;</div>
 
 <h4>Accessibility</h4>
-<div class="layout-content-row">
-  <div class="layout-content-col span-11">
+<div class="cols">
+  <div class="col-11">
     <p>One of Android's missions is to organize the world's information and
     make it universally accessible and useful. Our mission applies to all
     users-including people with disabilities such as visual impairment, color
@@ -183,7 +184,7 @@
     <a href="{@docRoot}design/patterns/widgets.html">Widgets</a> page has
     useful details about widget types, limitations, and design considerations.</p>
   </div>
-  <div class="layout-content-col span-2">
+  <div class="col-2">
     <img src="{@docRoot}design/media/new_accessibility.png">
   </div>
 </div>
@@ -191,8 +192,8 @@
 <h2>Android 4.0 Ice Cream Sandwich</h2>
 
 <h4>Navigation bar</h4>
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
     <p>Android 4.0 removes the need for traditional hardware keys on
     phones by replacing them with a virtual navigation bar that houses
     the Back, Home and Recents buttons. Read the
@@ -200,7 +201,7 @@
     pattern to learn how the OS adapts to phones with hardware buttons and
     how pre-Android 3.0 apps that rely on menu keys are supported.</p>
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="{@docRoot}design/media/whats_new_nav_bar.png">
   </div>
 </div>
@@ -208,13 +209,13 @@
 <div class="vspace size-2">&nbsp;</div>
 
 <h4>Action bar</h4>
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
     <p>The action bar is the most important structural element of an Android
     app. It provides consistent navigation across the platform and allows your
     app to surface actions.</p>
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="{@docRoot}design/media/whats_new_action_bar.png">
   </div>
 </div>
@@ -222,14 +223,14 @@
 <div class="vspace size-2">&nbsp;</div>
 
 <h4>Multi-pane layouts</h4>
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
     <p>Creating apps that scale well across different form factors and screen
     sizes is important in the Android world. Multi-pane layouts allow you to
     combine different activities that show separately on smaller devices into
     richer compound views for tablets.</p>
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="{@docRoot}design/media/whats_new_multipanel.png">
   </div>
 </div>
@@ -238,13 +239,13 @@
 
 <h4>Selection</h4>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
     <p>The long press gesture which was traditionally used to show contextual
     actions for objects is now used for data selection. When selecting data,
     contextual action bars allow you to surface actions.</p>
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="{@docRoot}design/media/whats_new_multiselect.png">
   </div>
 </div>
diff --git a/docs/html/design/patterns/notifications_k.jd b/docs/html/design/patterns/notifications_k.jd
index c8ef50b..01a12a7 100644
--- a/docs/html/design/patterns/notifications_k.jd
+++ b/docs/html/design/patterns/notifications_k.jd
@@ -22,8 +22,8 @@
 
 <h2>Anatomy of a notification</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>Base Layout</h4>
     <p>At a minimum, all notifications consist of a base layout, including:</p>
     <ul>
@@ -34,7 +34,7 @@
 image is shown for the main icon</li>
     </ul>
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="{@docRoot}design/media/notifications_pattern_anatomy.png">
     <div class="figure-caption">
       Base layout of a notification
@@ -54,8 +54,8 @@
 <img src="{@docRoot}design/media/notifications_pattern_expandable.png">
 
 <h4>Actions</h4>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <p>Android supports optional actions that are displayed at the bottom of
 the notification. With actions, users can handle the most common tasks for a
 particular notification from within the notification shade without having to
@@ -80,7 +80,7 @@
 or "Open")</li>
     </ul>
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
     <img src="{@docRoot}design/media/notifications_pattern_two_actions.png">
     <div class="figure-caption">
       Calendar reminder notification with two actions
@@ -96,11 +96,11 @@
 notification is available from within the associated application as well.</p>
 
 <h2>Design guidelines</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <img src="{@docRoot}design/media/notifications_pattern_personal.png">
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
     <h4>Make it personal</h4>
     <p>For notifications of items sent by another user (such as a message or
 status update), include that person's image.</p>
@@ -264,8 +264,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4>When not to display a notification</h4>
 <p>There are however many other cases where notifications should not be
@@ -312,20 +312,20 @@
 </ul>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="{@docRoot}design/media/notifications_pattern_social_fail.png">
   </div>
 </div>
 
 <h2 id="interacting-with-notifications">Interacting With Notifications</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/notifications_pattern_phone_icons.png">
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
   <p>Notifications are indicated by icons in the notification area and can be
 accessed by opening the notification drawer.</p>
@@ -337,8 +337,8 @@
   </div>
 </div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
 
 <p><h4>Ongoing notifications</h4>
 <p>Ongoing notifications keep users informed about an ongoing process in the
@@ -349,15 +349,15 @@
 manually removed from the notification drawer.</p></p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/notifications_pattern_ongoing_music.png">
 
   </div>
 </div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-12">
+<div class="cols">
+  <div class="col-12">
     <h4>Dialogs and toasts are for feedback not notification</h4>
     <p>Your app should not create a dialog or toast if it is not currently on
 screen. Dialogs and Toasts should only be displayed as the immediate response
diff --git a/docs/html/design/patterns/pure-android.jd b/docs/html/design/patterns/pure-android.jd
index a0f672e..e617711 100644
--- a/docs/html/design/patterns/pure-android.jd
+++ b/docs/html/design/patterns/pure-android.jd
@@ -1,4 +1,5 @@
 page.title=Pure Android
+page.image=images/cards/design-pure-android_2x.png
 @jd:body
 
 <p>Most developers want to distribute their apps on multiple platforms. As you plan your app for
@@ -10,8 +11,8 @@
 
 <div class="vspace size-1">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
+<div class="cols">
+  <div class="col-5">
 
 <h4>Don't mimic UI elements from other platforms</h4>
 <p>Platforms typically provide a carefully designed set of UI elements that are themed in a very
@@ -28,7 +29,7 @@
 conventions of a different platform.</p>
 
   </div>
-  <div class="layout-content-col span-8">
+  <div class="col-8">
 
     <img src="{@docRoot}design/media/migrating_ui_elements.png">
     <div class="figure-caption">
@@ -40,8 +41,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
+<div class="cols">
+  <div class="col-5">
 
 <h4>Don't carry over platform-specific icons</h4>
 <p>Platforms typically provide sets of icons for common functionality, such as sharing, creating a new
@@ -52,7 +53,7 @@
 <a href="{@docRoot}design/downloads/index.html">Downloads</a> page.</p>
 
   </div>
-  <div class="layout-content-col span-8">
+  <div class="col-8">
 
     <img src="{@docRoot}design/media/migrating_icons.png">
     <div class="figure-caption">
@@ -64,8 +65,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
+<div class="cols">
+  <div class="col-5">
 
 <h4>Don't use bottom tab bars</h4>
 <p>Other platforms use the bottom tab bar to switch between the app's views. Per platform convention,
@@ -77,7 +78,7 @@
 <a href="{@docRoot}design/patterns/actionbar.html">Action Bars</a>.</p>
 
   </div>
-  <div class="layout-content-col span-8">
+  <div class="col-8">
 
     <img src="{@docRoot}design/media/migrating_ios_dialers.png">
     <div class="figure-caption">
@@ -87,8 +88,8 @@
   </div>
 </div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
+<div class="cols">
+  <div class="col-5">
 
 <h4>Don't hardcode links to other apps</h4>
 <p>In some cases you might want your app to take advantage of another app's feature set. For
@@ -101,7 +102,7 @@
 sharing target.</p>
 
   </div>
-  <div class="layout-content-col span-8">
+  <div class="col-8">
 
     <img src="{@docRoot}design/media/migrating_intents.png">
     <div class="figure-caption">
@@ -114,8 +115,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
+<div class="cols">
+  <div class="col-5">
 
 <h4>Don't use labeled back buttons on action bars</h4>
 <p>Other platforms use an explicit back button with label to allow the user to navigate up the
@@ -125,7 +126,7 @@
 <p>Follow this guideline to provide a consistent navigation experience across the platform.</p>
 
   </div>
-  <div class="layout-content-col span-8">
+  <div class="col-8">
 
     <img src="{@docRoot}design/media/migrating_ios_galleries.png">
     <div class="figure-caption">
@@ -135,8 +136,8 @@
   </div>
 </div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
+<div class="cols">
+  <div class="col-5">
 
 <h4>Don't use right-pointing carets on line items</h4>
 <p>A common pattern on other platforms is the display of right-pointing carets on line items that allow
@@ -145,7 +146,7 @@
 the platform and in order to not have the user guess as to what the meaning of those carets may be.</p>
 
   </div>
-  <div class="layout-content-col span-8">
+  <div class="col-8">
 
     <img src="{@docRoot}design/media/migrating_ios_settings.png">
     <div class="figure-caption">
diff --git a/docs/html/design/patterns/selection.jd b/docs/html/design/patterns/selection.jd
deleted file mode 100644
index 7ed6dcc..0000000
--- a/docs/html/design/patterns/selection.jd
+++ /dev/null
@@ -1,123 +0,0 @@
-page.title=Selection
-page.tags=actionmode,navigation,contextual
-@jd:body
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/patterns/selection.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Selection<p>
-  </div>
-</a>
-
-<a class="notice-developers" href="{@docRoot}guide/topics/ui/menus.html#context-menu">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>Menus: Creating Contextual Menus</p>
-  </div>
-</a>
-
-
-<p>Android 3.0 changed the <em>long press</em> gesture&mdash;that is, a touch that's held in the same position for a moment&mdash;to be the global gesture to select data.. This affects the way you should
-handle multi-select and contextual actions in your apps.</p>
-
-<div class="vspace size-1">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-
-<h4>What has changed?</h4>
-<p>In previous versions of Android, the long press gesture was universally used to display contextual
-actions for a given data item in a contextual menu.</p>
-<p>This pattern changed with Android 3.0. The long press gesture is now used to select data, combining
-contextual actions and selection management functions for selected data into a new element called
-the contextual action bar (CAB).</p>
-
-  </div>
-  <div class="layout-content-col span-7">
-
-    <img src="{@docRoot}design/media/selection_context_menu.png">
-    <div class="figure-caption">
-      Traditional use of the long press gesture to show contextual menus.
-    </div>
-
-  </div>
-</div>
-
-<h4>Using the contextual action bar</h4>
-<p itemprop="description">The contextual action bar (CAB) is a temporary action bar that overlays your app's current action bar while data
-is selected. It appears after the user long-presses on a selectable data item.</p>
-
-<img src="{@docRoot}design/media/selection_cab_big.png">
-
-<div class="vspace size-1">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-
-<p>From here the user can:</p>
-<ul>
-<li>Select additional data items by touching them.</li>
-<li>Trigger an action from the CAB that applies to all highlighted data items. The CAB then
-  automatically dismisses itself.</li>
-<li>Dismiss the CAB via the navigation bar's Back button or the CAB's checkmark button. This removes
-  the CAB along with all selection highlights.</li>
-</ul>
-
-  </div>
-  <div class="layout-content-col span-7">
-
-    <img src="{@docRoot}design/media/selection_cab_example.png">
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-
-<h4>Selecting CAB actions</h4>
-<p>You can decide which actions and elements appear in the CAB. Use the guidelines in the <a href="actionbar.html">Action Bar
-pattern</a> to decide which items to surface at the top level and which to move to the
-action overflow.</p>
-<h4>Dynamically adjust CAB actions</h4>
-<p>In most cases you need to adjust the actions in the CAB dynamically as the user adds more items to
-the selection. Actions that apply to a single selected data item don't necessarily apply to multiple
-selected data items of the same kind.</p>
-
-  </div>
-  <div class="layout-content-col span-7">
-
-    <img src="{@docRoot}design/media/selection_adjusting_actions.png">
-    <div class="figure-caption">
-      Adjusting actions in the CAB as additional items are selected.
-    </div>
-
-  </div>
-</div>
-
-<div class="note develop">
-<p><strong>Developer Guide</strong></p>
-  <p>For information about how to create a contextual action bar, read
-  <a href="{@docRoot}guide/topics/ui/menus.html#CAB">Using the contextual action mode</a>.</p>
-</div>
-
-
-<h2 id="checklist">Checklist</h2>
-
-<ul>
-<li>
-<p>Whenever your app supports the selection of multiple data items, make use of the contextual action
-  bar (CAB).</p>
-</li>
-<li>
-<p>Reserve the long press gesture for selection exclusively. Don't use it to display traditional
-  contextual menus.</p>
-</li>
-<li>
-<p>If you don't support multi-selection within a list, long press should do nothing.</p>
-</li>
-<li>
-<p>Plan the actions you want to display inside of a CAB in the same way you would plan the actions
-  inside your app's action bar.</p>
-</li>
-</ul>
diff --git a/docs/html/design/patterns/settings.jd b/docs/html/design/patterns/settings.jd
deleted file mode 100644
index a24d6c0..0000000
--- a/docs/html/design/patterns/settings.jd
+++ /dev/null
@@ -1,708 +0,0 @@
-page.title=Settings
-page.tags=preferences,sharedpreferences
-@jd:body
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/patterns/settings.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Settings<p>
-  </div>
-</a>
-
-<a class="notice-developers" href="{@docRoot}guide/topics/ui/settings.html">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>Settings</p>
-  </div>
-</a>
-
-
-<p itemprop="description">Settings is a place in your app where users indicate their preferences for how your app should
-behave. This benefits users because:</p>
-
-<ul>
-<li>You don't need to interrupt them with the same questions over and over when certain situations
-arise. The settings predetermine what will always happen in those situations (see design
-principle: <a href="{@docRoot}design/get-started/principles.html#decide-for-me">Decide for me but
-let me have the final say</a>).</li>
-<li>You help them feel at home and in control (see design principle:
-<a href="{@docRoot}design/get-started/principles.html#make-it-mine">Let me make it mine</a>).</li>
-</ul>
-
-<h2 id="flow-structure">Flow and Structure</h2>
-
-<h4 id="settings-access">Provide access to Settings in the action overflow</h4>
-
-<p>Settings is given low prominence in the UI because it's not frequently needed. Even if there's
-room in the <a href="{@docRoot}design/patterns/actionbar.html">action bar</a>, never make Settings
-an action button. Always keep it in the action overflow and label it "Settings". Place it below
-all other items except "Help".</p>
-
-<img src="{@docRoot}design/media/settings_overflow.png">
-
-<div class="vspace size-2">&nbsp;</div>
-
-<h4 id="what-to-make-a-setting">Avoid the temptation to make everything a setting</h4>
-
-<p>Because Settings is a few navigational steps away, no matter how many items you have, they'll
-never clutter up the core part of your UI. This may seem like good news, but it also poses a
-challenge.</p>
-
-<p>Settings can be a tempting place to keep a lot of stuff&mdash;like a hall closet where things
-get stashed when you tidy up before company comes over. It's not a place where you spend lots of
-time, so it's easy to rationalize and ignore its cluttered condition. But when users visit
-Settings&mdash;however infrequently&mdash;they'll have the same expectations for the experience as
-they do everywhere else in your app. More settings means more choices to make, and too many are
-overwhelming.</p>
-
-<p>So don't punt on the difficult product decisions and debates that can bring on the urge to
-"just make it a setting". For each control you're considering adding to Settings, make sure it
-meets the bar:</p>
-
-<img src="{@docRoot}design/media/settings_flowchart.png">
-
-<div class="vspace size-3">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-5 with-callouts">
-
-<h4 id="group-settings">If you still have lots of settings, group related settings together</h4>
-
-<p>The number of items an average human can hold in short-term memory is 7&plusmn;2. If you
-present a list of 10 or more settings (even after applying the criteria above), users will have
-more difficulty scanning, comprehending, and processing them.</p>
-
-<p>You can remedy this by dividing some or all of the settings into groups, effectively turning
-one long list into multiple shorter lists. A group of related settings can be presented in one of
-two ways:</p>
-
-<ol>
-<li><h4>Under a section divider</h4></li>
-<li><h4>In a separate subscreen</h4></li>
-</ol>
-
-<p>You can use one or both these grouping techniques to organize your app's settings.</p>
-
-<p>For example, in the main screen of the Android Settings app, each item in the list navigates
-to a subscreen of related settings. In addition, the items themselves are grouped under section
-dividers.</p>
-
-  </div>
-  <div class="layout-content-col span-8">
-
-    <img src="{@docRoot}design/media/settings_grouping.png">
-
-  </div>
-</div>
-
-<p>Grouping settings is not an exact science, but here's some advice for how to approach it, based
-on the total number of settings in your app.</p>
-
-<div class="vspace size-1">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-2">
-
-<h4>7 or fewer</h4>
-
-  </div>
-  <div class="layout-content-col span-11">
-
-<p>Don't group them at all. It won't benefit users and will seem like overkill.</p>
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-2">
-
-<h4>8 to 10</h4>
-
-  </div>
-  <div class="layout-content-col span-11">
-
-<p>Try grouping related settings under 1 or 2 section dividers. If you have any "singletons"
-(settings that don't relate to any other settings and can't be grouped under your section
-dividers), treat them as follows:</p>
-
-<ul>
-<li>If they include some of your most important settings, list them at the top without a section
-divider.</li>
-<li>Otherwise, list them at the bottom with a section divider called "OTHER", in order of
-importance.</li>
-</ul>
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-2">
-
-<h4>11 to 15</h4>
-
-  </div>
-  <div class="layout-content-col span-11">
-
-<p>Same advice as above, but try 2 to 4 section dividers.</p>
-
-<p>Also, try the following to reduce the list:</p>
-
-<ul>
-<li>If 2 or more of the settings are mainly for power users, move them out of your main Settings
-screen and into an "Advanced" subscreen. Place an item in the action overflow called "Advanced" to
-navigate to it.</li>
-<li>Look for "doubles": two settings that relate to one another, but not to any other settings.
-Try to combine them into one setting, using the design patterns described later in this section.
-For example, you might be able to redesign two related checkbox settings into one multiple choice
-setting.</li>
-</ul>
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-2">
-
-<h4>16 or more</h4>
-
-  </div>
-  <div class="layout-content-col span-11">
-
-<p>If you have any instances of 4 or more related settings, group them under a subscreen. Then use
-the advice suggested above for the reduced list size.</p>
-
-  </div>
-</div>
-
-
-<h2 id="patterns">Design Patterns</h2>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-3">
-
-<h4>Checkbox</h4>
-<p>Use this pattern for a setting that is either selected or not selected.</p>
-
-  </div>
-  <div class="layout-content-col span-10">
-
-<img src="{@docRoot}design/media/settings_checkbox.png">
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-3">
-
-<h4>Multiple choice</h4>
-<p>Use this pattern for a setting that needs to present a discrete set of options, from which the
-user can choose only one.</p>
-
-  </div>
-  <div class="layout-content-col span-10">
-
-<img src="{@docRoot}design/media/settings_multiple_choice.png">
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-3">
-
-<h4>Slider</h4>
-<p>Use this pattern for a setting where the range of values are not discrete and fall along a
-continuum.</p>
-
-  </div>
-  <div class="layout-content-col span-10">
-
-<img src="{@docRoot}design/media/settings_slider.png">
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-3">
-
-<h4>Date/time</h4>
-<p>Use this pattern for a setting that needs to collect a date and/or time from the user.</p>
-
-  </div>
-  <div class="layout-content-col span-10">
-
-<img src="{@docRoot}design/media/settings_date_time.png">
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-3">
-
-<h4>Subscreen navigation</h4>
-<p>Use this pattern for navigating to a subscreen or sequence of subscreens that guide the user
-through a more complex setup process.</p>
-<ul>
-<li>If navigating to a single subscreen, use the same title in both the subscreen and the label
-navigating to it.</li>
-<li>If navigating to a sequence of subscreens (as in this example), use a title that describes the
-first step in the sequence.</li>
-</ul>
-
-  </div>
-  <div class="layout-content-col span-10">
-
-<img src="{@docRoot}design/media/settings_subscreen_navigation.png">
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-3">
-
-<h4>List subscreen</h4>
-<p>Use this pattern for a setting or category of settings that contains a list of equivalent items.
-</p>
-<p>The label provides the name of the item, and secondary text may be used for status. (In this
-example, status is reinforced with an icon to the right of the label.) Any actions associated with
-the list appear in the action bar rather than the list itself.</p>
-
-  </div>
-  <div class="layout-content-col span-10">
-
-<img src="{@docRoot}design/media/settings_list_subscreen.png">
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-3">
-
-<h4>Master on/off switch</h4>
-<p>Use this pattern for a category of settings that need a mechanism for turning on or off as a
-whole.</p>
-<p>An on/off switch is placed as the first item in the action bar of a subscreen. When the switch
-is turned off, the items in the list disappear, replaced by text that describes why the list is
-empty. If any actions require the switch to be on, they become disabled.</p>
-
-  </div>
-  <div class="layout-content-col span-10">
-
-<img src="{@docRoot}design/media/settings_master_on_off.png">
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-3">
-
-<div class="vspace size-2">&nbsp;</div>
-
-<p>You can also echo the master on/off switch in the menu item that leads to the subscreen.
-However, you should only do this in cases where users rarely need to access the subscreen once
-it's initially set up and more often just want to toggle the switch.</p>
-
-  </div>
-  <div class="layout-content-col span-10">
-
-<img src="{@docRoot}design/media/settings_master_on_off_2.png">
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-3">
-
-<h4>Individual on/off switch</h4>
-<p>Use this pattern for an individual setting that requires a more elaborate description than can
-be provided in checkbox form.</p>
-<p>The on/off switch only appears in the subscreen so that users aren't able to toggle it without
-also being exposed to the descriptive text. Secondary text appears below the setting label to
-reflect the current selection.</p>
-<p>In this example, Android Beam is on by default. Since users might not know what this setting
-does, we made the status more descriptive than just "On".</p>
-
-  </div>
-  <div class="layout-content-col span-10">
-
-<img src="{@docRoot}design/media/settings_individual_on_off.png">
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-3">
-
-<h4>Dependency</h4>
-<p>Use this pattern for a setting that changes availability based on the value of another setting.
-</p>
-<p>The disabled setting appears below its dependency, without any indentation. If the setting
-includes a status line, it says "Unavailable", and if the reason isn't obvious, a brief
-explanation is included in the status.</p>
-<p>If a given setting is a dependency to 3 or more settings, consider using a subscreen with a
-master on/off switch so that your main settings screen isn't cluttered by lots of disabled items.
-</p>
-
-  </div>
-  <div class="layout-content-col span-10">
-
-<img src="{@docRoot}design/media/settings_dependency.png">
-
-  </div>
-</div>
-
-<h2 id="defaults">Defaults</h2>
-
-<p>Take great care in choosing default values for each of your settings. Because settings
-determine app behavior, your choices will contribute to users' first impressions of your app. Even
-though users can change settings, they'll expect the initial states to be sensible. The following
-questions (when applicable) may help inform your decisions:</p>
-
-<ul>
-<li>Which choice would most users be likely to choose on their own if there were no default?</li>
-<li>Which choice is the most neutral or middle-of-the-road?</li>
-<li>Which choice is the least risky, controversial, or over-the-top?</li>
-<li>Which choice uses the least amount of battery or mobile data?</li>
-<li>Which choice best supports the design principle
-<a href="{@docRoot}design/get-started/principles.html#never-lose-my-stuff">Never lose my stuff</a>?</li>
-<li>Which choice best supports the design principle
-<a href="{@docRoot}design/get-started/principles.html#interrupt-only-if-important">Only interrupt
-me if it's important</a>?
-</li>
-</ul>
-
-<h2 id="writing">Writing Guidelines</h2>
-
-<h4>Label clearly and concisely</h4>
-
-<p>Writing a good label for a setting can be challenging because space is very limited. You only
-get one line, and it's incredibly short on the smallest of devices. Follow these guidelines to
-make your labels brief, meaningful, and scannable:</p>
-
-<ul>
-<li>Write each label in sentence case (i.e. only the first word and proper nouns are capitalized).
-</li>
-<li>Don't start a label with an instructional verb like "Set", "Change", "Edit", "Modify",
-"Manage", "Use", "Select", or "Choose". Users already understand that they can do these things to
-settings.</li>
-<li>Likewise, don't end a label with a word like "setting" or "settings". It's already implied.
-</li>
-<li>If the setting is part of a grouping, don't repeat the word(s) used in the section divider or
-subscreen title.</li>
-<li>Avoid starting a label with a negative word like "Don't" or "Never". For example, "Don't
-allow" could be rephrased to "Block".</li>
-<li>Steer clear of technical jargon as much as possible, unless it's a term widely understood by
-your target users. Use common verbs and nouns to convey the setting's purpose rather than its
-underlying technology.</li>
-<li>Don't refer to the user. For example, for a setting allowing the user to turn notifications on
-or off, label it "Notifications" instead of "Notify me".</li>
-</ul>
-
-<p>Once you've decided on labels for your settings, be sure to preview them on an
-<a href="{@docRoot}design/style/metrics-grids.html">LDPI handset</a> in portrait to make sure
-they'll fit everywhere.</p>
-
-<h4>Secondary text below is for status, not description&hellip;</h4>
-
-<p>Before Ice Cream Sandwich, we often displayed secondary text below a label to further describe
-it or provide instructions. Starting in Ice Cream Sandwich, we're using secondary text for status.
-</p>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
-
-    <div class="do-dont-label bad emulate-content-left-padding">Before</div>
-
-    <table class="ui-table bad emulate-content-left-padding">
-    <thead>
-      <tr>
-        <th class="label">
-        Screen timeout
-        </th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td class="secondary-text">
-        Adjust the delay before the screen automatically turns off
-        </td>
-      </tr>
-    </tbody>
-    </table>
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <div class="do-dont-label good">After</div>
-
-    <table class="ui-table good">
-    <thead>
-      <tr>
-        <th class="label">
-        Sleep
-        </th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td class="secondary-text">
-        After 10 minutes of inactivity
-        </td>
-      </tr>
-    </tbody>
-    </table>
-
-  </div>
-</div>
-
-<p>Status in secondary text has the following benefits:</p>
-<ul>
-<li>Users can see at a glance what the current value of a setting is without having to navigate
-any further.</li>
-<li>It applies the design principle
-<a href="{@docRoot}design/get-started/principles.html#keep-it-brief">Keep it brief</a>, which
-users greatly appreciate.</li>
-</ul>
-
-<h4>&hellip;unless it's a checkbox setting</h4>
-<p>There's one important exception to the using secondary text for status: checkbox settings.
-Here, use secondary text for description, not status. Status below a checkbox is unnecessary
-because the checkbox already indicates it. The reason why it's appropriate to have a description
-below a checkbox setting is because&mdash;unlike other controls&mdash;it doesn't display a dialog
-or navigate to another screen where additional information can be provided.</p>
-
-<p>That said, if a checkbox setting's label is clear enough on its own, there's no need to also
-provide a description. Only include one if necessary.</p>
-
-<p>Follow these guidelines to write checkbox setting descriptions:</p>
-<ul>
-<li>Keep it to one sentence and don't use ending punctuation.</li>
-<li>Convey what happens when the setting is checked, phrased in the form of a command. Example:
-"Allow data exchange", not "Allows data exchange".</li>
-<li>Avoid repetition by choosing words that don't already appear in the label.</li>
-<li>Don't refer to the user unless it's necessary for understanding the setting.</li>
-<li>If you must refer to the user, do so in the second person ("you") rather than the first person
-("I"). Android speaks to users, not on behalf of them.</li>
-</ul>
-
-<h4>Writing examples</h4>
-
-<p>The following are examples of changes we made to labels and secondary text in the Settings app
-in Ice Cream Sandwich.</p>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
-
-    <div class="do-dont-label bad emulate-content-left-padding">Before</div>
-
-    <table class="ui-table bad emulate-content-left-padding">
-    <thead>
-      <tr>
-        <th class="label">
-        Use tactile feedback
-        </th>
-      </tr>
-    </thead>
-    </table>
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <div class="do-dont-label good">After</div>
-
-    <table class="ui-table good">
-    <thead>
-      <tr>
-        <th class="label">
-        Vibrate on touch
-        </th>
-      </tr>
-    </thead>
-    </table>
-
-  </div>
-  <div class="layout-content-col span-5">
-
-<p>In this checkbox setting, we eliminated the throwaway word "Use" and rephrased the label to be
-more direct and understandable.</p>
-
-  </div>
-
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
-
-    <div class="do-dont-label bad emulate-content-left-padding">Before</div>
-
-    <table class="ui-table bad emulate-content-left-padding">
-    <thead>
-      <tr>
-        <th class="label">
-        Screen timeout
-        </th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td class="secondary-text">
-        Adjust the delay before the screen automatically turns off
-        </td>
-      </tr>
-    </tbody>
-    </table>
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <div class="do-dont-label good">After</div>
-
-    <table class="ui-table good">
-    <thead>
-      <tr>
-        <th class="label">
-        Sleep
-        </th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td class="secondary-text">
-        After 10 minutes of inactivity
-        </td>
-      </tr>
-    </tbody>
-    </table>
-
-  </div>
-  <div class="layout-content-col span-5">
-
-<p>In this multiple choice setting, we changed the label to a friendlier term and also replaced
-the description with status. We put some descriptive words around the selected value, "10
-minutes", because on its own, the meaning could be misinterpreted as "sleep for 10 minutes".</p>
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
-
-    <div class="do-dont-label bad emulate-content-left-padding">Before</div>
-
-    <table class="ui-table bad emulate-content-left-padding">
-    <thead>
-      <tr>
-        <th class="label">
-        Change screen lock
-        </th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td class="secondary-text">
-        Change or disable pattern, PIN, or password security
-        </td>
-      </tr>
-    </tbody>
-    </table>
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <div class="do-dont-label good">After</div>
-
-    <table class="ui-table good">
-    <thead>
-      <tr>
-        <th class="label">
-        Screen lock
-        </th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td class="secondary-text">
-        Pattern
-        </td>
-      </tr>
-    </tbody>
-    </table>
-
-  </div>
-  <div class="layout-content-col span-5">
-
-<p>This setting navigates to a a sequence of subscreens that allow users to choose a type of
-screen lock and then set it up. We eliminated the throwaway word "Change" in the label, and
-replaced the description with the current type of screen lock set up by the user. If the user
-hasn't set up a screen lock, the secondary text says "None".</p>
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
-
-    <div class="do-dont-label bad emulate-content-left-padding">Before</div>
-
-    <table class="ui-table bad emulate-content-left-padding">
-    <thead>
-      <tr>
-        <th class="label">
-        NFC
-        </th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td class="secondary-text">
-        Use Near Field Communication to read and exchange tags
-        </td>
-      </tr>
-    </tbody>
-    </table>
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <div class="do-dont-label good">After</div>
-
-    <table class="ui-table good">
-    <thead>
-      <tr>
-        <th class="label">
-        NFC
-        </th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td class="secondary-text">
-        Allow data exchange when the phone touches another device
-        </td>
-      </tr>
-    </tbody>
-    </table>
-
-  </div>
-  <div class="layout-content-col span-5">
-
-<p>In this checkbox setting&mdash;although it's technical jargon&mdash;we kept the "NFC" label
-because: (1) we couldn't find a clear, concise alternative, and (2) user familiarity with the
-acronym is expected to increase dramatically in the next couple of years.</p>
-<p>We did, however, rewrite the description. It's far less technical than before and does a better
-job of conveying how and why you'd use NFC. We didn't include what the acronym stands for because
-it doesn't mean anything to most users and would have taken up a lot of space.</p>
-
-  </div>
-</div>
-
-
-
-<h2 id="checklist">Checklist</h2>
-<ul>
-<li><p>Make sure each item in Settings meets the criteria for belonging there.</p></li>
-<li><p>If you have more than 7 items, explore ways to group related settings.</p></li>
-<li><p>Use design patterns wherever applicable so users don't face a learning curve.</p></li>
-<li><p>Choose defaults that are safe, neutral, and fit the majority of users.</p></li>
-<li><p>Give each setting a clear, concise label and use secondary text appropriately.</p></li>
-</ul>
diff --git a/docs/html/design/patterns/swipe-views.jd b/docs/html/design/patterns/swipe-views.jd
index af5c9dc..9ee33db 100644
--- a/docs/html/design/patterns/swipe-views.jd
+++ b/docs/html/design/patterns/swipe-views.jd
@@ -42,8 +42,8 @@
 
 <h2 id="between-tabs">Swiping Between Tabs</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
+<div class="cols">
+  <div class="col-5">
 
     <div class="framed-nexus5-port-span-5">
       <video class="play-on-hover" autoplay>
@@ -58,7 +58,7 @@
     </div>
 
   </div>
-  <div class="layout-content-col span-8">
+  <div class="col-8">
     <p>If your app uses action bar tabs, use swipe to navigate between the different views.</p>
     <div class="vspace size-1">&nbsp;</div>
 
diff --git a/docs/html/design/patterns/widgets.jd b/docs/html/design/patterns/widgets.jd
index 47acc7b..b149af6 100644
--- a/docs/html/design/patterns/widgets.jd
+++ b/docs/html/design/patterns/widgets.jd
@@ -21,18 +21,18 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h3>Collection widgets</h3>
     <p>As the name implies, collection widgets specialize in displaying multitude elements of the same type, such as a collection of pictures from a gallery app, a collection of articles from a news app or a collection of emails/messages from a communication app. Collection widgets typically focus on two use cases: browsing the collection, and opening an element of the collection to its detail view for consumption. Collection widgets can scroll vertically.</p>
   </div>
-  <div class="layout-content-col span-3">
+  <div class="col-3">
     <img src="{@docRoot}design/media/widgets_collection_gmail.png">
     <div class="figure-caption">
       ListView widget
     </div>
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
     <img src="{@docRoot}design/media/widgets_collection_bookmarks.png">
     <div class="figure-caption">
       GridView widget
@@ -84,8 +84,8 @@
   <li>Open application at top level: Tapping on an information element will usually navigate the user to a lower level detail screen. Providing access to the top level of your application provides more navigation flexibility and can replace a dedicated app shortcut that users would otherwise use to navigate to the app from the home screen. Using your application icon as an affordance can also provide your widget with a clear identity in case the data you're displaying is ambiguous.</li>
 </ul>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h3>Widget resizing</h3>
     <p>With version 3.1, Android introduced resizable widgets to the platform. Resizing allows users to adjust the height and/or the width of a widget within the constraints of the home panel placement grid. You can decide if your widget is freely resizable or if it is constrained to horizontal or vertical size changes. You do not have to support resizing if your particular widget is inherently fixed-size.</p>
     <p>Allowing users to resize widgets has important benefits:</p>
@@ -95,7 +95,7 @@
     </ul>
   </div>
 
-  <div class="layout-content-col span-7">
+  <div class="col-7">
     <img src="{@docRoot}design/media/widgets_resizing01.png">
     <div class="figure-caption">
       A long press and subsequent release sets resizable widgets into resize mode. Users can use the drag handles or the widget corners to set the desired size.
@@ -116,14 +116,14 @@
 </ul>
 
 <h3>Widget configuration</h3>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <p>Sometimes widgets need to be setup before they can become useful. Think of an email widget for example, where you need to provide an account before the inbox can be displayed. Or a static photo widget where the user has to assign the picture that is to be displayed from the gallery.</p>
     <p>Android widgets display their configuration choices right after the widget is dropped onto a home panel. Keep the widget configuration light and don't present more than 2-3 configuration elements. Use dialog-style instead of full-screen activities to present configuration choices and retain the user's context of place, even if doing so requires use of multiple dialogs.</p>
 <p>Once setup, there typically is not a lot of reason to revisit the setup. Therefore Android widgets do not show a "Setup" or "Configuration" button.</p>
   </div>
 
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="{@docRoot}design/media/widgets_config.png">
     <div class="figure-caption">
       After adding a Play widget to a home panel, the widget asks the user to specify the type of media the widget should display.
diff --git a/docs/html/design/style/branding.jd b/docs/html/design/style/branding.jd
deleted file mode 100644
index b5bb77c..0000000
--- a/docs/html/design/style/branding.jd
+++ /dev/null
@@ -1,128 +0,0 @@
-page.title=Your Branding
-page.tags=branding,logo
-@jd:body
-
-<p>Following Android design patterns doesn't mean that your app has to look the same as
-everyone else's. In Android, your app can shine as an extension of your brand. </p>
-
-<h2 id="color">Color</h2>
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/style/color.html#color-ui-color-application">
-  <div>
-    <h3>Material Design</h3>
-    <p>UI Color Application<p>
-  </div>
-</a>
-
-<p>Use your brand color for accent by overriding the Android framework's default blue in UI elements like checkboxes, progress bars, radio buttons, sliders, tabs, and scroll indicators.</p>
-
-<p>Look for opportunities to use high-contrast color for emphasis, for example, as the background color of the action bar or a primary button. But don't go overboard: not all actions are equal, so use it only for the one or two most important things.</p>
-<p>When customizing colors, <a href="{@docRoot}design/style/touch-feedback.html">touch feedback</a>
-  should be subtle &mdash; just slightly lighter or darker than the untouched color.</p>
-
-<div class="vspace size-1">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-    <img src="{@docRoot}design/media/branding_wallet.png" style="width:94%">
-    <div class="figure-caption">
-      The four colors of the Google Wallet logo provide a playful accent to the four dots
-      that appear as the user enters a PIN.
-    </div>
-  </div>
-  <div class="layout-content-col span-6">
-    <img src="{@docRoot}design/media/branding_googlemusic.png" style="width:94%">
-    <div class="figure-caption">
-      The Google Play Music app has an orange theme color, which is used for emphasis
-      in the action bar and for accent in the selected tab, scroll indicator, and
-      hyperlinks.
-    </div>
-  </div>
-</div>
-
-<h2 id="logo">Logo</h2>
-
-<p>Your app's <a href="{@docRoot}design/style/iconography.html#launcher">launcher icon</a> is
-  a key place to incorporate your logo, because it's what
-  users will look for and touch to begin using your app. You can carry the launcher
-  icon through to all the screens in your app by showing it in the
-  <a href="{@docRoot}design/patterns/actionbar.html">action bar</a> along
-  with the name of the app.</p>
-
-<p>Another approach to consider is to have your logo take the place of the launcher icon
-and app name in the action bar.</p>
-
-
-<div class="vspace size-1">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6" style="padding-top:24px;">
-        <img src="{@docRoot}design/media/branding_launcher_icon.png" style="width:60px;float:left;padding-right:1em;">
-    <div class="figure-caption" style="width:290px;margin-left:20px;">
-    Google+ reinforces its brand by carrying its launcher icon through to the action bar.
-    </div>
-        <img src="{@docRoot}design/media/branding_logo_icon_action_bar.png" style="width:320px;float:left;padding-right:1em;">
-  </div>
-  <div class="layout-content-col span-6">
-    <img src="{@docRoot}design/media/yourbranding_app.png" style="width:320px;">
-    <div class="figure-caption" style="width:320px;">
-      Example of a the logo in the action bar. This works well in cases where the brand's logo matches the name of the app.
-    </div>
-  </div>
-</div>
-
-<h2 id="logo">Icons</h2>
-
-<a class="notice-designers-material" href="http://www.google.com/design/spec/style/icons.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Icons<p>
-  </div>
-</a>
-
-<p>If you have icons that you're already using for your app on other platforms
-and they have a distinctive look intended to fit your brand, use them on your
-Android app as well. <strong>If you take this approach, make sure your brand styling is
-applied to every single icon in your app.</strong></p>
-
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-    <p>One exception: For any icon in your existing set where the symbol is different from
-    Android's, use Android's symbol but give it your brand's styling. That way, users will
-    understand what the purpose of the icon is based on what they've learned in other
-    Android apps (Design principle:
-    <a href="{@docRoot}design/get-started/principles.html#give-me-tricks">Give me tricks that
-    work everywhere</a>). But the icon will still look like it belongs with all of
-    your other icons as a part of your brand.</p>
-
-  </div>
-
-  <div class="layout-content-col span-6">
-    <img src="{@docRoot}design/media/yourbranding_in-app-icons.png" style="width:300px;margin:12px 48px 0 16px;">
-    </div>
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-    <p><strong>Example</strong>:<br />
-    </p>
-    <p>The brand's normal icon for sharing on other platforms is a right arrow.
-  </div>
-
-  <div class="layout-content-col span-6 lasyout-with-list-item-margins">
-
-    <div style="margin-bottom:1em;">
-      <span class="do-dont-label bad" style="margin-left:12px">Don't</span>
-      <span style="margin-left: 64px;"  class="do-dont-label good"><strong>Do</strong></span>
-    </div>
-      <img src="{@docRoot}design/media/yourbranding_sharing.png" style="width:180px;">
-  </div>
-</div>
-
-<p>What if you don't already have your own icons &mdash; for example, if you're creating a
-brand new app only for Android? In this case, use Android's standard icons and rely
-more on color and logo for branding. Get the Action Bar Icon Pack, available for free
-in <a href="{@docRoot}design/downloads/index.html">Downloads</a>.</p>
diff --git a/docs/html/design/style/color.jd b/docs/html/design/style/color.jd
deleted file mode 100644
index 4c5f5ab..0000000
--- a/docs/html/design/style/color.jd
+++ /dev/null
@@ -1,141 +0,0 @@
-page.title=Color
-@jd:body
-
-<style>
-  .color-row {
-    width: 760px;
-    margin:0;
-
-    display: -webkit-box;
-    display:    -moz-box;
-    display:         box;
-
-    -webkit-box-orient: horizontal;
-       -moz-box-orient: horizontal;
-            box-orient: horizontal;
-
-    cursor: pointer;
-
-    -webkit-user-select: none;
-            user-select: none;
-    /* nested user-select in FF is broken as of Jan 2012, don't use it */
-  }
-
-  .color-row-container {
-    line-height: 0; /* to remove more top space in FF for -moz-box elements */
-  }
-
-  .color-row-container + .color-row-container {
-    margin-top: -10px !important;
-  }
-
-  .color-row li {
-    margin-left: 0 !important;
-    position: relative;
-    list-style-type: none;
-    height: 80px;
-    display: block;
-
-    -webkit-box-flex: 1;
-       -moz-box-flex: 1;
-            box-flex: 1;
-  }
-
-  .color-row li:before {
-    display: none;
-  }
-
-  .color-row li.thin {
-    height: 40px;
-  }
-
-  .color-row li span {
-    display: none;
-    position: absolute;
-    top: -30px;
-    left: 50%;
-    margin-left: -2.5em;
-    width: 5em;
-    background-color: #fff;
-    padding: 10px;
-    font-weight: 600;
-    line-height: 20px;
-    text-align: center;
-    box-shadow: 0 5px 5px rgba(0,0,0,0.1);
-    cursor: text;
-
-    -webkit-user-select: text;
-            user-select: text;
-    /* nested user-select in FF is broken as of Jan 2012, don't use it */
-  }
-
-  .color-row li:hover span {
-    display: block;
-  }
-
-  /* triangle callout */
-  .color-row li span:after {
-    content: '';
-    display: block;
-    position: absolute;
-    left: 50%;
-    bottom: -16px;
-    border: 8px solid transparent;
-    border-top-color: #fff;
-    width: 0;
-    height: 0;
-    margin-left: -8px;
-  }
-</style>
-
-<a class="notice-designers-material" href="http://www.google.com/design/spec/style/color.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Color<p>
-  </div>
-</a>
-
-<p>Use color primarily for emphasis. Choose colors that fit with your brand and provide good contrast
-between visual components. Note that red and green may be indistinguishable to color-blind users.</p>
-
-    <div class="color-row-container">
-      <ul class="color-row">
-        <li><span>#33b5e5</span></li>
-        <li><span>#aa66cc</span></li>
-        <li><span>#99cc00</span></li>
-        <li><span>#ffbb33</span></li>
-        <li><span>#ff4444</span></li>
-      </ul>
-    </div>
-
-    <div class="color-row-container">
-      <ul class="color-row">
-        <li class="thin"><span>#0099cc</span></li>
-        <li class="thin"><span>#9933cc</span></li>
-        <li class="thin"><span>#669900</span></li>
-        <li class="thin"><span>#ff8800</span></li>
-        <li class="thin"><span>#cc0000</span></li>
-      </ul>
-    </div>
-
-<h2 id="palette">Palette</h2>
-
-<p>Blue is the standard accent color in Android's color palette. Each color has a corresponding darker
-shade that can be used as a complement when needed.</p>
-<p><a onClick="ga('send', 'event', 'Design', 'Download', 'Color Swatches (@color page)');"
-      href="{@docRoot}downloads/design/Android_Design_Color_Swatches_20120229.zip">Download the swatches</a></p>
-
-<img src="{@docRoot}design/media/color_spectrum.png">
-
-<script>
-  $(document).ready(function() {
-    $('.color-row li').each(function() {
-      var color = $(this).text();
-      $(this).css('background-color', color);
-      $(this).find('span')
-          .css('color', color)
-          .text(color.toUpperCase());
-    });
-
-  });
-</script>
diff --git a/docs/html/design/style/devices-displays.jd b/docs/html/design/style/devices-displays.jd
index 1590363..caa77da 100644
--- a/docs/html/design/style/devices-displays.jd
+++ b/docs/html/design/style/devices-displays.jd
@@ -19,15 +19,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
+<div class="cols">
+  <div class="col-4">
 
 <h4>Be flexible</h4>
 
 <p>Stretch and compress your layouts to accommodate various heights and widths.</p>
 
   </div>
-  <div class="layout-content-col span-5">
+  <div class="col-5">
 
 <h4>Optimize layouts</h4>
 
@@ -35,7 +35,7 @@
 multiple views to reveal more content and ease navigation.</p>
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
 
 <h4>Assets for all</h4>
 <p>Provide resources for different screen densities (<acronym title="Dots per inch">DPI</acronym>) to
diff --git a/docs/html/design/style/iconography.jd b/docs/html/design/style/iconography.jd
deleted file mode 100644
index e2cdf3f..0000000
--- a/docs/html/design/style/iconography.jd
+++ /dev/null
@@ -1,601 +0,0 @@
-page.title=Iconography
-page.tags="icons"
-meta.tags="icons, googleplay, listing, branding"
-page.titleFriendly=Guidelines for creating your app's icons
-@jd:body
-
-<img src="{@docRoot}design/media/iconography_overview.png">
-
-
-<p>An icon is a graphic that takes up a small portion of screen real estate and provides a quick,
-intuitive representation of an action, a status, or an app.</p>
-
-<p>When you design icons for your app, it's important to keep in mind that your
-app may be installed on a variety of devices that offer a range of
-pixel densities, as mentioned in
-<a href="{@docRoot}design/style/devices-displays.html">Devices
-and Displays</a>. But you can make your icons look great on all devices
-by providing each icon in multiple sizes. When your app runs, Android checks the characteristics of
-the device screen and loads the appropriate density-specific assets for your app. </p>
-
-<p>Because you will deliver each icon in multiple sizes to support different densities,
-the design guidelines below
-refer to the icon dimensions in <acronym title="density-independent pixels">dp</acronym>
-units, which are based on the pixel dimensions of a medium-density (MDPI) screen.</p>
-
-<img src="{@docRoot}design/media/devices_displays_density@2x.png" alt="" height="160" />
-
-<p>So, to create an icon for different densities, you should follow the <strong>2:3:4:6:8
-scaling ratio</strong> between the five primary densities (medium, high, x-high, xx-high, and
-xxx-high respectively). For example, consider that the size for a launcher icon is specified to be
-48x48 dp. This means the baseline (MDPI) asset is 48x48 px, and the
-high-density(HDPI) asset should be 1.5x the baseline at 72x72 px, and the x-high
-density (XHDPI) asset should be 2x the baseline at 96x96 px, and so on.</p>
-
-<p class="note"><strong>Note:</strong> Android also supports low-density (LDPI) screens,
-but you normally don't need to create custom assets at this size because Android
-effectively down-scales your HDPI assets by 1/2 to match the expected size.</p>
-
-
-
-
-<h2 id="launcher">Launcher</h2>
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/style/icons.html#icons-product-icons">
-  <div>
-    <h3>Material Design</h3>
-    <p>Product Icons<p>
-  </div>
-</a>
-
-<p>The launcher icon is the visual representation of your app on the Home or All Apps screen. Since the
-user can change the Home screen's wallpaper, make sure that your launcher icon is clearly visible on
-any type of background.</p>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
-
-    <img src="{@docRoot}design/media/iconography_launcher_size.png">
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <img src="{@docRoot}design/media/iconography_launcher_focal.png">
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <img src="{@docRoot}design/media/iconography_launcher_style.png">
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
-
-    <h4>Sizes &amp; scale</h4>
-
-    <ul>
-      <li class="no-bullet with-icon tablet">
-        <p>Launcher icons on a mobile device must be <strong>48x48 <acronym title="Density-independent pixels. One dp is one pixel on a 160 dpi screen.">dp</acronym></strong>.</p></li>
-      <li class="no-bullet with-icon web">
-        <p>Launcher icons for display on Google Play must be <strong>512x512 pixels</strong>.</p></li>
-    </ul>
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <h4>Proportions</h4>
-
-    <ul>
-      <li class="no-bullet with-icon tablet">
-        <p>Full asset, <strong>48x48 dp</strong></p>
-      </li>
-    </ul>
-
-  </div>
-  <div class="layout-content-col span-4">
-
-<h4>Style</h4>
-<p>Use a distinct silhouette. Three-dimensional, front view, with a slight perspective as if viewed
-from above, so that users perceive some depth.</p>
-
-  </div>
-</div>
-
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
-    &nbsp;
-  </div>
-  <div class="layout-content-col span-7">
-
-    <img src="{@docRoot}design/media/iconography_launcher_example.png">
-
-  </div>
-  <!-- 2 free columns -->
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-12">
-
-    <img src="{@docRoot}design/media/iconography_launcher_example2.png">
-
-    <div class="vspace size-2">&nbsp;</div>
-
-  </div>
-  <!-- 1 free columns -->
-</div>
-
-
-<h2 id="action-bar">Action Bar</h2>
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/style/icons.html#icons-system-icons">
-  <div>
-    <h3>Material Design</h3>
-    <p>System Icons<p>
-  </div>
-</a>
-
-<p>
-
-Action bar icons are graphic buttons that represent the most important actions people can take
-within your app. Each one should employ a simple metaphor representing a single concept that most
-people can grasp at a glance.
-
-</p>
-<p>
-
-Pre-defined glyphs should be used for certain common actions such as "refresh" and "share." The
-download link below provides a package with icons that are scaled for various screen densities and
-are suitable for use with the Holo Light and Holo Dark themes. The package also includes unstyled
-icons that you can modify to match your theme, in addition to Adobe&reg; Illustrator&reg; source
-files for further customization.
-
-</p>
-<p>
-<a onClick="ga('send', 'event', 'Design', 'Download', 'Action Bar Icons (@iconography page)');"
-   href="{@docRoot}downloads/design/Android_Design_Icons_20131106.zip">Download the Action Bar Icon Pack</a>
-</p>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
-
-    <img src="{@docRoot}design/media/iconography_actionbar_size.png">
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <img src="{@docRoot}design/media/iconography_actionbar_focal.png">
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <img src="{@docRoot}design/media/iconography_actionbar_style.png">
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
-
-    <h4>Sizes &amp; scale</h4>
-
-    <ul>
-      <li class="no-bullet with-icon tablet">
-        <p>Action bar icons for phones should be <strong>32x32 <acronym title="Density-independent pixels. One dp is one pixel on a 160 dpi screen.">dp</acronym></strong>.</p></li>
-    </ul>
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <h4>Focal area &amp; proportions</h4>
-
-    <ul>
-      <li class="no-bullet with-icon tablet">
-        <p>Full asset, <strong>32x32 dp</strong></p>
-        <p>Optical square, <strong>24x24 dp</strong></p>
-      </li>
-    </ul>
-
-  </div>
-  <div class="layout-content-col span-4">
-
-<h4>Style</h4>
-<p>Pictographic, flat, not too detailed, with smooth curves or sharp shapes. If the graphic is thin,
-rotate it 45&deg; left or right to fill the focal space. The thickness of the strokes and negative
-spaces should be a minimum of 2 dp.</p>
-
-  </div>
-</div>
-
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-3">
-
-<h4>Colors</h4>
-<p>Colors: <strong>#333333</strong><br />
-Enabled: <strong>60%</strong> opacity<br />
-Disabled: <strong>30%</strong> opacity</p>
-<div class="vspace size-1">&nbsp;</div>
-
-<p>Colors: <strong>#FFFFFF</strong><br />
-Enabled: <strong>80%</strong> opacity<br />
-Disabled: <strong>30%</strong> opacity</p>
-
-  </div>
-  <div class="layout-content-col span-9">
-
-    <img src="{@docRoot}design/media/iconography_actionbar_colors.png">
-
-  </div>
-</div>
-
-
-<h2 id="small-contextual">Small / Contextual Icons</h2>
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/style/icons.html#icons-system-icons">
-  <div>
-    <h3>Material Design</h3>
-    <p>System Icons<p>
-  </div>
-</a>
-
-<p>Within the body of your app, use small icons to surface actions and/or provide status for specific
-items. For example, in the Gmail app, each message has a star icon that marks the message as
-important.</p>
-
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
-
-    <img src="{@docRoot}design/media/iconography_small_size.png">
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <img src="{@docRoot}design/media/iconography_small_focal.png">
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <img src="{@docRoot}design/media/iconography_small_style.png">
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
-
-    <h4>Sizes &amp; scale</h4>
-
-    <ul>
-      <li class="no-bullet with-icon tablet">
-        <p>Small icons should be <strong>16x16 <acronym title="Density-independent pixels. One dp is one pixel on a 160 dpi screen.">dp</acronym></strong>.</p></li>
-    </ul>
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <h4>Focal area &amp; proportions</h4>
-
-    <ul>
-      <li class="no-bullet with-icon tablet">
-        <p>Full asset, <strong>16x16 dp</strong></p>
-        <p>Optical square, <strong>12x12 dp</strong></p>
-      </li>
-    </ul>
-
-  </div>
-  <div class="layout-content-col span-4">
-
-<h4>Style</h4>
-<p>Neutral, flat, and simple. Filled shapes are easier to see than thin strokes. Use a single visual
-metaphor so that a user can easily recognize and understand its purpose.</p>
-
-  </div>
-</div>
-
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
-
-    <img src="{@docRoot}design/media/iconography_small_colors.png">
-
-    <div class="vspace size-2">&nbsp;</div>
-
-<h4>Colors</h4>
-<p>Use non-neutral colors sparingly and with purpose. For example, Gmail uses yellow in the star icon
-to indicate a bookmarked message. If an icon is actionable, choose a color that contrasts well with
-the background.</p>
-
-  </div>
-  <div class="layout-content-col span-7">
-
-    <img src="{@docRoot}design/media/iconography_small_example.png">
-
-  </div>
-  <!-- 2 free columns -->
-</div>
-
-
-<h2 id="notification">Notification Icons</h2>
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/style/icons.html#icons-system-icons">
-  <div>
-    <h3>Material Design</h3>
-    <p>System Icons<p>
-  </div>
-</a>
-
-
-<p>If your app generates notifications, provide an icon that the system can display in the status bar
-whenever a new notification is available.</p>
-
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
-
-    <img src="{@docRoot}design/media/iconography_notification_size.png">
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <img src="{@docRoot}design/media/iconography_notification_focal.png">
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <img src="{@docRoot}design/media/iconography_notification_style.png">
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
-
-    <h4>Sizes &amp; scale</h4>
-
-    <ul>
-      <li class="no-bullet with-icon tablet">
-        <p>Notification icons must be <strong>24x24 <acronym title="Density-independent pixels. One dp is one pixel on a 160 dpi screen.">dp</acronym></strong>.</p></li>
-    </ul>
-
-  </div>
-  <div class="layout-content-col span-4">
-
-    <h4>Focal area &amp; proportions</h4>
-
-    <ul>
-      <li class="no-bullet with-icon tablet">
-        <p>Full asset, <strong>24x24 dp</strong></p>
-        <p>Optical square, <strong>22x22 dp</strong></p>
-      </li>
-    </ul>
-
-  </div>
-  <div class="layout-content-col span-4">
-
-<h4>Style</h4>
-<p>Keep the style flat and simple, using the same single, visual metaphor as your launcher icon.</p>
-
-  </div>
-</div>
-
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-4">
-
-<h4>Colors</h4>
-<p>Notification icons must be entirely white. Also, the system may scale down and/or darken the icons.</p>
-
-  </div>
-  <div class="layout-content-col span-7">
-
-    <img src="{@docRoot}design/media/iconography_notification_example.png">
-
-  </div>
-  <!-- 2 free columns -->
-</div>
-
-
-
-
-
-
-
-
-
-
-<h2 id="DesignTips">Design Tips</h2>
-
-<p>Here are some tips you might find useful as you create icons or other
-drawable assets for your application. These tips assume you are using
-Adobe&reg; Photoshop&reg; or a similar raster and vector image-editing program.</p>
-
-
-
-
-<h3>Use vector shapes where possible</h3>
-
-<p>Many image-editing programs such as Adobe&reg; Photoshop&reg; allow you to use a
-combination of vector shapes and raster layers and effects. When possible,
-use vector shapes so that if the need arises, assets can be scaled up without
-loss of detail and edge crispness.</p>
-
-<p>Using vectors also makes it easy to align edges and corners to pixel
-boundaries at smaller resolutions.</li>
-
-
-
-<h3>Start with large artboards</h3>
-
-<p>Because you will need to create assets for different screen densities,
-it is best to start your icon
-designs on large artboards with dimensions that are multiples of the target icon
-sizes. For example, launcher icons are 48, 72, 96, or 144 pixels wide,
-depending on screen density (mdpi, hdpi, xhdpi, and xxhdpi, respectively). If you
-initially draw launcher icons on an 864x864 artboard, it will be easier and
-cleaner to adjust the icons when you scale the artboard down to the target
-sizes for final asset creation.</p>
-
-
-
-<h3>When scaling, redraw bitmap layers as needed</h3>
-
-<p>If you scaled an image up from a bitmap layer, rather than from a vector
-layer, those layers will need to be redrawn manually to appear crisp at higher
-densities. For example if a 60x60 circle was painted as a bitmap for
-mdpi it will need to be repainted as a 90x90 circle for hdpi.</p>
-
-
-
-<h3>Use common naming conventions for icon assets</h3>
-
-<p>Try to name files so that related assets will group together inside a
-directory when they are sorted alphabetically. In particular, it helps to use a
-common prefix for each icon type. For example:</p>
-
-<table>
-<tr>
-<th>Asset Type</th>
-<th>Prefix</th>
-<th>Example</th>
-</tr>
-<tr>
-<td>Icons</td>
-<td><code>ic_</code></td>
-<td><code>ic_star.png</code></td>
-</tr>
-<tr>
-<td>Launcher icons</td>
-<td><code>ic_launcher</code></td>
-<td><code>ic_launcher_calendar.png</code></td>
-</tr>
-<tr>
-<td>Menu icons and Action Bar icons</td>
-<td><code>ic_menu</code></td>
-<td><code>ic_menu_archive.png</code></td>
-</tr>
-<tr>
-<td>Status bar icons</td>
-<td><code>ic_stat_notify</code></td>
-<td><code>ic_stat_notify_msg.png</code></td>
-</tr>
-<tr>
-<td>Tab icons</td>
-<td><code>ic_tab</code></td>
-<td><code>ic_tab_recent.png</code></td>
-</tr>
-<tr>
-<td>Dialog icons</td>
-<td><code>ic_dialog</code></td>
-<td><code>ic_dialog_info.png</code></td>
-</tr>
-</table>
-
-<p>Note that you are not required to use a shared prefix of any
-type&mdash;doing so is for your convenience only.</p>
-
-
-<h3>Set up a working space that organizes files by density</h3>
-
-<p>Supporting multiple screen densities means you must create multiple versions
-of the same icon. To help keep the multiple copies of files safe and easier to
-find, we recommend creating a directory structure in your working space that
-organizes asset files based on the target density. For example:</p>
-
-<pre>
-art/...
-    mdpi/...
-        _pre_production/...
-            <em>working_file</em>.psd
-        <em>finished_asset</em>.png
-    hdpi/...
-        _pre_production/...
-            <em>working_file</em>.psd
-        <em>finished_asset</em>.png
-    xhdpi/...
-        _pre_production/...
-            <em>working_file</em>.psd
-        <em>finished_asset</em>.png
-    xxhdpi/...
-        _pre_production/...
-            <em>working_file</em>.psd
-        <em>finished_asset</em>.png
-</pre>
-
-<p>Because the structure in your working space is similar to that of the application, you
-can quickly determine which assets should be copied to each
-resources directory. Separating assets by density also helps you detect any
-variances in filenames across densities, which is important because
-corresponding assets for different densities must share the same filename.</p>
-
-<p>For comparison, here's the resources directory structure of a typical
-application: </p>
-
-<pre>res/...
-    drawable-ldpi/...
-        <em>finished_asset</em>.png
-    drawable-mdpi/...
-        <em>finished_asset</em>.png
-    drawable-hdpi/...
-        <em>finished_asset</em>.png
-    drawable-xhdpi/...
-        <em>finished_asset</em>.png
-    drawable-xxhdpi/...
-        <em>finished_asset</em>.png
-
-    mipmap-ldpi/...
-        <em>finished_launcher_asset</em>.png
-    mipmap-mdpi/...
-        <em>finished_launcher_asset</em>.png
-    mipmap-hdpi/...
-        <em>finished_launcher_asset</em>.png
-    mipmap-xhdpi/...
-        <em>finished_launcher_asset</em>.png
-    mipmap-xxhdpi/...
-        <em>finished_launcher_asset</em>.png
-    mipmap-xxxhdpi/...
-        <em>finished_launcher_asset</em>.png
-</pre>
-
-<p>For more information about how to save resources in the application project,
-see <a href="{@docRoot}guide/topics/resources/providing-resources.html">Providing Resources</a>.
-</p>
-
-<p> For more information about using the mipmap folders, see
-<a href="{@docRoot}tools/projects/index.html#mipmap">Managing Projects Overview</a>.</p>
-
-<h3 id="xxxhdpi-launcher">Provide an xxx-high-density launcher icon</h3>
-
-<p>Some devices scale-up the launcher icon by as much as 25%. For example, if your highest density
-launcher icon image is already extra-extra-high density, the scaling process will make it appear
-less crisp. So you should provide a higher density launcher icon in the <code>mipmap-xxxhdpi
-</code> directory, which the system uses instead of scaling up a smaller version of the icon.</p>
-
-<p class="note"><strong>Note:</strong> The <code>mipmap-xxxhdpi</code> qualifier is necessary
-only to provide a launcher icon that can appear larger than usual on an xxhdpi device. It is best
-practice to place all your launcher icons in the <code>res/mipmap-[density]/</code> folders. This
-enables your app to display launcher icons that have a higher density than the device, without
-scaling up a lower density version of the icon. You do not need to provide xxxhdpi assets for all
-your app's images.</p>
-
-<p>See <a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a> for
-more information.</p>
-
-
-<h3>Remove unnecessary metadata from final assets</h3>
-
-<p>Although the Android SDK tools will automatically compress PNGs when packaging
-application resources into the application binary, a good practice is to remove
-unnecessary headers and metadata from your PNG assets. Tools such as <a
-href="http://optipng.sourceforge.net/">OptiPNG</a> or <a
-href="http://pmt.sourceforge.net/pngcrush/">Pngcrush</a> can ensure that this
-metadata is removed and that your image asset file sizes are optimized.</p>
-
-
diff --git a/docs/html/design/style/metrics-grids.jd b/docs/html/design/style/metrics-grids.jd
deleted file mode 100644
index d7b5f78..0000000
--- a/docs/html/design/style/metrics-grids.jd
+++ /dev/null
@@ -1,90 +0,0 @@
-page.title=Metrics and Grids
-page.metaDescription=Optimize your app's UI by designing layouts based on density-independent grids.
-page.tags="layout","screens"
-meta.tags="multiple screens, layout, tablets"
-page.image=/design/media/metrics_closeup.png
-@jd:body
-
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/layout/metrics-keylines.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Metrics and Keylines<p>
-  </div>
-</a>
-
-
-<p>Devices vary not only in physical size, but also in screen density (<acronym title="Dots per
-inch">DPI</acronym>). To simplify the way you design for multiple screens, think of each device as
-falling into a particular size bucket and density bucket:</p>
-<ul>
- <li>The size buckets are <em>handset</em> (smaller than
-600<acronym title="Density-independent pixels: One dp is one pixel on a 160 dpi (mdpi)
-screen.">dp</acronym>) and <em>tablet</em> (larger than or equal 600dp).</li>
- <li>The density buckets are <acronym
-title="Low density (120 dpi)">LDPI</acronym>, <acronym title="Medium density (160
-dpi)">MDPI</acronym>, <acronym title="High density (240 dpi)">HDPI</acronym>, <acronym title
-="Extra-high density (320 dpi)">XHDPI</acronym>, <acronym title
-="Extra-extra!-high density (480 dpi)">XXHDPI</acronym>, and <acronym title
-="Extra-extra-extra!-high density (640 dpi)">XXXHDPI</acronym>.</li>
-</ul>
-
-<p>Optimize your application's UI by designing
-alternative layouts for some of the different size buckets, and provide alternative bitmap images
-for different density buckets.</p>
-
-<p>Because it's important that you design and implement your layouts for multiple densities,
-the guidelines below and throught the documentation
-refer to layout dimensions with <acronym title="Density-independent pixels: One dp is one pixel
-on a 160 dpi (mdpi) screen.">dp</acronym> measurements instead of pixels.</p>
-
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-8">
-
-    <img src="{@docRoot}design/media/metrics_diagram.png">
-
-  </div>
-  <div class="layout-content-col span-5">
-
-<h4>Space considerations</h4>
-<p>Devices vary in the amount of density-independent pixels (dp) they can display.</p>
-<p>To see more, visit the
-<a href="http://developer.android.com/resources/dashboard/screens.html" target="_blank">
-Screen Sizes and Densities Device Dashboard</a>.</p>
-
-  </div>
-</div>
-
-
-<h2 id="48dp-rhythm">48dp Rhythm</h2>
-
-<p>Touchable UI components are generally laid out along 48dp units.</p>
-
-<img src="{@docRoot}design/media/metrics_48.png">
-
-<div class="vspace size-2">&nbsp;</div>
-
-<h4>Why 48dp?</h4>
-<p>On average, 48dp translate to a physical size of about 9mm (with some variability). This is
-comfortably in the range of recommended target sizes (7-10 mm) for touchscreen objects and users
-will be able to reliably and accurately target them with their fingers.</p>
-<p>If you design your elements to be at least 48dp high and wide you can guarantee that:</p>
-<ul>
-<li>your targets will never be smaller than the minimum recommended target size of 7mm regardless of
-  what screen they are displayed on.</li>
-<li>you strike a good compromise between overall information density on the one hand, and
-  targetability of UI elements on the other.</li>
-</ul>
-
-<img src="{@docRoot}design/media/metrics_closeup.png">
-
-<div class="vspace size-2">&nbsp;</div>
-
-<h4>Mind the gaps</h4>
-<p>Spacing between each UI element is 8dp.</p>
-
-<h2 id="examples">Examples</h2>
-
-<img src="{@docRoot}design/media/metrics_forms.png">
diff --git a/docs/html/design/style/themes.jd b/docs/html/design/style/themes.jd
deleted file mode 100644
index 3313a2b..0000000
--- a/docs/html/design/style/themes.jd
+++ /dev/null
@@ -1,53 +0,0 @@
-page.title=Themes
-@jd:body
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
-
-    <img src="{@docRoot}design/media/themes_holo_light.png">
-    <div class="figure-caption">
-      Gmail in Holo Light.
-    </div>
-
-    <img src="{@docRoot}design/media/themes_holo_dark.png">
-    <div class="figure-caption">
-      Settings in Holo Dark.
-    </div>
-
-  </div>
-  <div class="layout-content-col span-7">
-
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/style/color.html#color-themes">
-  <div>
-    <h3>Material Design</h3>
-    <p>Color Themes<p>
-  </div>
-</a>
-
-
-<p>Themes are Android's mechanism for applying a consistent style to an app or activity.
-The style specifies the visual properties of the elements that make up your user interface,
-such as color, height, padding and font size. To promote greater cohesion between all apps
-on the platform, Android provides two system themes that you can choose from when building apps:</p>
-<ul>
-<li>Holo Light</li>
-<li>Holo Dark</li>
-</ul>
-<p>Applying these themes will go a long way in helping you to build apps that fit right into the
-general visual language of Android.</p>
-<p>Pick the system theme that best matches the needs and design aesthetics for your app. If your
-desire is to have a more distinct look for your app, using one of the system themes as a starting
-point for your customizations is a good idea. The system themes provide a solid foundation on top
-of which you can selectively implement your own visual stylings.</p>
-
-<div class="note develop">
-<p><strong>Developer Guide</strong></p>
-  <p>For information about how to apply themes such as Holo Light and Dark, and
-  how to build your own themes, see the
-  <a href="{@docRoot}guide/topics/ui/themes.html">Styles and Themes</a> API guide.</p>
-</div>
-
-  </div>
-</div>
diff --git a/docs/html/design/style/touch-feedback.jd b/docs/html/design/style/touch-feedback.jd
deleted file mode 100644
index b6d64079..0000000
--- a/docs/html/design/style/touch-feedback.jd
+++ /dev/null
@@ -1,95 +0,0 @@
-page.title=Touch Feedback
-page.tags=input,button
-@jd:body
-
-<div class="layout-content-row" style="margin-bottom: -100px">
-<div class="layout-content-col span-7">
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/animation/responsive-interaction.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Responsive Interaction<p>
-  </div>
-</a>
-
-
-<p>Use illumination and dimming to respond to touches, reinforce the resulting behaviors
-of gestures, and indicate what actions are enabled and disabled.</p>
-
-<p><strong>Be responsive to touches in a gentle way</strong>. Whenever a user touches an
-actionable area in your app, let them know the app is "listening" by providing a visual
-response. Make it subtle &mdash;just slightly lighter or darker than the untouched color. This
-provides two benefits:</p>
-
-<ul>
-<li><a href="{@docRoot}design/get-started/principles.html#sprinkle-encouragement">Sprinkles
-of encouragement</a> are more pleasant than jolts.</li>
-<li>Incorporating <a href="{@docRoot}design/style/branding.html">your branding</a> is much
-easier because the default touch feedback works with whatever hue you choose.</li>
-</ul>
-
-</div>
-
-<div class="layout-content-col span-6" style="float:right;">
-  <video  class="play-on-hover" width="268" height="442" autoplay style="border:1px solid #ddd;background-color:#f9f9f9;" poster="">
-    <source src="{@docRoot}design/media/touch_feedback.mp4" type="video/mp4">
-    <source src="{@docRoot}design/media/touch_feedback.webm" type="video/webm">
-    <source src="{@docRoot}design/media/touch_feedback.ogv" type="video/ogg">
-  </video>
-  <div class="figure-caption">
-    <div style="color:#a3a3a3;margin-left:130px;"><em>Click image to replay...</em></div>
-  </div>
-</div>
-
-<h4 style="clear:both;">States</h4>
-
-
-<div class="vspace size-1">&nbsp;</div>
-
-<img src="{@docRoot}design/media/touch_feedback_states.png">
-<div class="figure-caption">
-  Most of Android's UI elements have touch feedback built in, including
-  states that indicate whether touching the element will have any effect.
-</div>
-
-<div class="vspace size-3">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-
-    <h4>Communication</h4>
-<p>When your objects react to more complex gestures, help users
-understand what the outcome will be.</p>
-
-<p>In Recents, when a user starts swiping a thumbnail left or right, it
-begins to dim. This helps the user understand that swiping will cause the
-item to be removed.</p>
-  </div>
-  <div class="layout-content-col span-7">
-
-    <img src="{@docRoot}design/media/touch_feedback_manipulation.png">
-
-  </div>
-</div>
-<div class="vspace size-3">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-
-    <img src="{@docRoot}design/media/touch_feedback_communication.png">
-    <p><em>If a user attempts to scroll past the last home screen panel, the screen
-    content tilts to the right to indicate that further navigation in this direction
-    isn’t possible.</em></p>
-
-  </div>
-  <div class="layout-content-col span-6">
-
-<h4>Boundaries</h4>
-<p>
-  When users try to scroll past the beginning or end of a scrollable area,
-  communicate the boundary with a visual cue. Many of Android's scrollable UI
-  widgets, like lists and grid lists, have support for boundary feedback built
-  in. If you’re building custom widgets, keep boundary feedback in mind and
-  provide it from within your app.
-</p>
diff --git a/docs/html/design/style/typography.jd b/docs/html/design/style/typography.jd
deleted file mode 100644
index 2f8e91b..0000000
--- a/docs/html/design/style/typography.jd
+++ /dev/null
@@ -1,78 +0,0 @@
-page.title=Typography
-page.tags="textview","font"
-page.metaDescription=How to use typography in your Android apps.
-@jd:body
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-8">
-
-    <img src="{@docRoot}design/media/typography_main.png">
-
-  </div>
-
-<a class="notice-designers-material"
-  style="width: 278px;"
-  href="http://www.google.com/design/spec/style/typography.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Typography<p>
-  </div>
-</a>
-
-<div class="layout-content-col span-5">
-
-<p>
-  <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Roboto ZIP');"
-    href="{@docRoot}downloads/design/roboto-1.2.zip">Download Roboto</a>
-</p>
-
-<p>The Android design language relies on traditional typographic tools such as scale, space, rhythm,
-and alignment with an underlying grid. Successful deployment of these tools is essential to help
-users quickly understand a screen of information. To support such use of typography, Ice Cream
-Sandwich introduced a new type family named
-<a href="http://www.google.com/fonts/specimen/Roboto" class="external-link">Roboto</a>, created
-specifically for the requirements of UI and high-resolution screens.</p>
-
-<p>The current {@link android.widget.TextView} framework offers Roboto in thin, light, regular and bold
-weights, along with an italic style for each weight. The framework also offers the
-<a href="http://www.google.com/fonts/specimen/Roboto+Condensed" class="external-link">Roboto Condensed</a>
-variant in regular and bold weights, along with an italic style for each weight.</p>
-
-    <img src="{@docRoot}design/media/typography_variants@2x.png" width="220">
-
-<p><a onClick="ga('send', 'event', 'Design', 'Download', 'Roboto Specimen Book (@typography page)');"
-      href="{@docRoot}downloads/design/Roboto_Specimen_Book_20131031.pdf">Specimen Book</a></p>
-
-  </div>
-</div>
-
-<hr>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-
-<h4>Default type colors</h4>
-<p>The Android UI uses the following default color styles: <code>textColorPrimary</code> and
-<code>textColorSecondary</code>. For light themes use <code>textColorPrimaryInverse</code> and
-<code>textColorSecondaryInverse</code>. The framework text color styles also support variants for
-touch feedback states when used inside UI elements.</p>
-
-    <img src="{@docRoot}design/media/typography_defaults.png">
-
-  </div>
-  <div class="layout-content-col span-6">
-
-<h4>Typographic Scale</h4>
-<p>Contrast in type sizes can go a long way to create ordered, understandable layouts. However, too
-many different sizes in the same UI can be messy. The Android framework uses the following limited
-set of type sizes:</p>
-
-<img src="{@docRoot}design/media/typography_sizes.png">
-
-<p>Users can select a system-wide scaling factor for text in the Settings app. In order to support
-these accessibility features, type should be specified in scale-independent pixels
-(<acronym title="Scale-independent pixels. One sp is one pixel on a 160 dpi screen if the user's global text scale is set to 100%.">sp</acronym>)
-wherever possible. Layouts supporting scalable types should be tested against these settings.</p>
-
-  </div>
-</div>
diff --git a/docs/html/design/style/writing.jd b/docs/html/design/style/writing.jd
deleted file mode 100644
index 4f62253..0000000
--- a/docs/html/design/style/writing.jd
+++ /dev/null
@@ -1,322 +0,0 @@
-page.title=Writing Style
-page.tags=dialog,toast,notification
-@jd:body
-
-<h2 id="voa">Android's Voice</h2>
-
-<p>When writing text that appears in your app, keep it concise, simple, and friendly.</p>
-
-<h4 id="concise">Concise</h4>
-
-<ul>
-  <li>Describe only what the user needs to know.</li>
-  <li>Eliminate redundancy, such as titles that restate the body of an information box.</li>
-  <li>Keep text as short as possible.</li>
-</ul>
-
-<p><em>Avoid wordy, stilted text</em></p>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6 layout-with-list-item-margins">
-
-    <div class="do-dont-label bad">Don't</div>
-
-    <table class="ui-table good"><tbody><tr><td>
-    Consult the documentation that came with your phone for further instructions.
-    </td></tr></tbody></table>
-
-  </div>
-  <div class="layout-content-col span-6">
-
-    <div class="do-dont-label good">Do</div>
-
-    <table class="ui-table good"><tbody><tr><td>
-    Read the instructions that came with your phone.
-    </td></tr></tbody></table>
-
-  </div>
-</div>
-
-<p><em>Don't provide unnecessary information</em></p>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6 layout-with-list-item-margins">
-
-    <div class="do-dont-label bad">From a Setup Wizard screen</div>
-
-    <table class="ui-table bad">
-    <thead>
-      <tr>
-        <th>
-        Signing in...
-        </th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td>
-        Your phone needs to communicate with<br>
-        Google servers to sign in to your account.<br>
-        This may take up to five minutes.
-        </td>
-      </tr>
-    </tbody>
-    </table>
-
-  </div>
-  <div class="layout-content-col span-6">
-
-    <div class="do-dont-label good">From a Setup Wizard screen</div>
-
-    <table class="ui-table good">
-    <thead>
-      <tr>
-        <th>
-        Signing in...
-        </th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td>
-        Your phone is contacting Google.<br>
-        This can take up to 5 minutes.
-        </td>
-      </tr>
-    </tbody>
-    </table>
-
-  </div>
-</div>
-
-<h4 id="simple">Simple</h4>
-
-<ul>
-  <li>Use short words, active verbs, and common nouns.</li>
-  <li>Put the most important thing first. “Front-load” the first 11 characters
-      with the most salient information in the string.</li>
-  <li>Don’t try to explain subtle differences. They are lost on most users.</li>
-</ul>
-
-<p><em>Focus on the user's concern, not technical details</em></p>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6 layout-with-list-item-margins">
-
-    <div class="do-dont-label bad">Don't</div>
-
-    <table class="ui-table good"><tbody><tr><td>
-    Manually control GPS to prevent other apps from using it
-    </td></tr></tbody></table>
-
-  </div>
-  <div class="layout-content-col span-6">
-
-    <div class="do-dont-label good">Do</div>
-
-    <table class="ui-table good"><tbody><tr><td>
-    To save power, switch Location mode to Battery saving
-    </td></tr></tbody></table>
-
-  </div>
-</div>
-
-<p><em>Put top news first</em></p>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6 layout-with-list-item-margins">
-
-    <div class="do-dont-label bad">Don't</div>
-
-    <table class="ui-table good"><tbody><tr><td>
-    77 other people +1’d this, including Larry Page
-    </td></tr></tbody></table>
-
-  </div>
-  <div class="layout-content-col span-6">
-
-    <div class="do-dont-label good">Do</div>
-
-    <table class="ui-table good"><tbody><tr><td>
-    Larry Page and 76 others +1’d this
-    </td></tr></tbody></table>
-
-  </div>
-</div>
-
-<p><em>Put the user's goal first</em></p>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6 layout-with-list-item-margins">
-
-    <div class="do-dont-label bad">Don't</div>
-
-    <table class="ui-table good"><tbody><tr><td>
-    Touch Next to complete setup using a Wi-Fi connection
-    </td></tr></tbody></table>
-
-  </div>
-  <div class="layout-content-col span-6">
-
-    <div class="do-dont-label good">Do</div>
-
-    <table class="ui-table good"><tbody><tr><td>
-    To finish setup using Wi-Fi, touch Next
-    </td></tr></tbody></table>
-
-  </div>
-</div>
-
-
-<h4 id="friendly">Friendly</h4>
-
-<ul>
-  <li>Use contractions.</li>
-  <li>Talk directly to the reader. Use “you”  to refer to the reader.</li>
-  <li>Keep your tone casual and conversational, but avoid slang.</li>
-</li>
-</ul>
-
-<p><em>Avoid being confusing or annoying</em></p>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6 layout-with-list-item-margins">
-    <div class="do-dont-label bad">Don't</div>
-    <table class="ui-table bad">
-    <thead>
-      <tr>
-        <th>
-        Sorry!
-        </th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td>
-        Activity MyAppActivity (in application<br />
-        MyApp) is not responding
-        </td>
-      </tr>
-    </tbody>
-    </table>
-
-  </div>
-  <div class="layout-content-col span-6">
-    <div class="do-dont-label good">Do</div>
-    <table class="ui-table good">
-    <thead>
-      <tr>
-        <th>
-        MyApp isn’t responding 
-        </th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td>
-        Do you want to close it?
-        </td>
-      </tr>
-    </tbody>
-    </table>
-  </div>
-</div>
-
-
-<h4>Words to avoid</h4>
-
-<div style="padding:5px 2.1em;">
-<table>
-  <tr>
-    <td class="do-dont-label bad" style="width:40%">Don't use</td>
-    <td class="do-dont-label good" style="width:40%">Use</td>
-  </tr>
-  <tr>
-    <td>one, two, three, four, ...</td>
-    <td>1, 2, 3, 4, ...</td>
-  </tr>
-  <tr>
-    <td>application</td>
-    <td>app</td>
-  </tr>
-  <tr>
-    <td>cannot, could not, do not, did not 
-will not, you will</td>
-    <td><em>Contractions:</em> can’t, couldn’t, don’t, didn’t won’t, you’ll, and so on</td>
-  </tr>
-    <tr>
-    <td>okay, ok</td>
-    <td>OK</td>
-  </tr>
-  <tr>
-    <td>please, sorry, thank you</td>
-    <td><em>Attempts at politeness can annoy the user, especially in messages that say
-        something has gone wrong.<br />
-        Exception: In Japanese, “please” is mandatory and imperative verbs should
-        be localized accordingly (turn on -> please turn on).
-        </em></td>
-  </tr>
-    <tr>
-    <td>there is, there are, it is<br />
-        <em>and other “disappeared” subjects (grammatical expletives)</em></td>
-    <td><em>Use a noun as the subject</em></td>
-  </tr>
-  <tr>
-    <td>abort, kill, terminate</td>
-    <td>stop, cancel, end, exit</td>
-  </tr>
-    <tr>
-    <td>fail, failed, <em>negative language</em></td>
-    <td><em>In general, use positive phrasing<br />
-        (for example, “do” rather than “don’t,” except in cases such as “Don’t show
-        again,” “Can’t connect,” and so on.)</em></td>
-  </tr>
-  <tr>
-    <td>me, I, my, mine</td>
-    <td>you, your, yours</td>
-  </tr>
-    <tr>
-    <td>Are you sure? Warning!</td>
-    <td><em>Tell user the consequence instead, for example, “You’ll lose all photos 
-        and media”</em></td>
-  </tr>
-</table>
-
-</div>
-
-<h2 id="formatting_text">Formatting text</h2>
-
-<h4 id="capitalization">Capitalization</h4>
-
-<ul>
-  <li>Use sentence-style capitalization for all UI strings: “Words to live by.”</li>
-  <li>Capitalize all important words in: 
-    <ul>
-      <li>App names (Calendar, Google Drive)</li>
-      <li>Named features (Android Beam, Face Unlock)</li>
-      <li>Proper nouns (Statue of Liberty, San Francisco Giants)</li>
-    </ul>
-  </li>
-  <li>Be conservative. Don't capitalize words that aren't part of a formal feature name: 
-    <ul>
-      <li>Sim card lock, Home screen, not Sim Card Lock, Home Screen.</li>
-    </ul>
-  </li>
-</ul>
-
-
-<h4 id="punctuation">Punctuation</h4>
-<ul>
-  <li><strong>Period.</strong> Don't use a period after a single sentence or
-  phrase used in isolation, such as in a toast, label, or notification. Wherever two or
-  more sentences run together, use a period for each sentence. </li>
-  <li><strong>Ellipsis.</strong> Use the ellipsis character (…) (Option-; on MacOS and &amp;hellip;
-    in HTML) to indicate 
-    <ul>
-      <li>Incompleteness, such as an action in progress (“Downloading...”) or truncated text.</li>
-      <li>That a menu item (such as Print… or Share…) leads to further UI involving significant
-        choices. Exception: Commands whose wording already implies further (but limited) UI, such
-        as <strong>Find in page</strong> or <strong>Pick a date</strong>, do not require an
-        ellipsis. </li>
-    </ul>
-  </li>
-</ul>
diff --git a/docs/html/design/tv/patterns.jd b/docs/html/design/tv/patterns.jd
index e786ee5..ccec285 100644
--- a/docs/html/design/tv/patterns.jd
+++ b/docs/html/design/tv/patterns.jd
@@ -43,8 +43,8 @@
 </a>. For a visual overview of recommendations, see <a href="design/tv/index.html#recommendations">
 Design for Android TV</a>.</p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-8 with-callouts">
+<div class="cols">
+  <div class="col-8 with-callouts">
 
   <p>The design elements of the recommendation card are as follows:</p>
   <ol>
@@ -61,7 +61,7 @@
   Recommendations</a> for more information.</p>
 
   </div>
-  <div class="layout-content-col span-5">
+  <div class="col-5">
 
     <img src="{@docRoot}images/tv/recommend-card.png">
 
diff --git a/docs/html/design/videos/index.jd b/docs/html/design/videos/index.jd
deleted file mode 100644
index 976767d..0000000
--- a/docs/html/design/videos/index.jd
+++ /dev/null
@@ -1,130 +0,0 @@
-page.title=Videos
-@jd:body
-
-<p>The Android Design Team presents design-oriented sessions at Google I/O every year. Visit these pages to view the videos and presentations from the conferences.</p>
-
-<img src="{@docRoot}images/home/io-logo-2013-alt.png">
-
-<div class="vspace size-2">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
-    <h3 id="design-for-success"><a href="https://developers.google.com/events/io/2013/sessions/326368573">Enchant, Simplify, Amaze: Android's Design Principles</a></h3>
-    <p>Want to enchant people, simplify their lives, and make them feel amazing with your app? Learn how Android's Design Principles can help you create products that resonate with people. Find out about the meaning and research behind the principles. See real-world examples and practices from the Android Design team. Discover techniques for applying the principles in your daily work. No design experience necessary.</p>
-  </div>
-  <div class="layout-content-col span-6">
-    <iframe width="355" height="200" src="//www.youtube.com/embed/s0HIP8EdlnE" frameborder="0" allowfullscreen=""></iframe>
-  </div>
-</div>
-
-<div class="vspace size-2">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
-    <h3 id="design-for-success"><a href="https://developers.google.com/events/io/2013/sessions/326301704">Structure in Android App Design</a></h3>
-    <p>Life is simple when your app is simple. But when your apps gets more complex, how do you choose between spinners, tabs, and drawers for navigation? Members of the Android Design team look at techniques for making your app predictable and pleasing to use.</p>
-  </div>
-  <div class="layout-content-col span-6">
-    <iframe width="355" height="200" src="//www.youtube.com/embed/XpqyiBR0lJ4" frameborder="0" allowfullscreen=""></iframe>
-  </div>
-</div>
-
-<div class="vspace size-2">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
-    <h3 id="design-for-success"><a href="https://developers.google.com/events/io/2013/sessions/326425499">Fireside Chat with the Android Team</a></h3>
-    <p>Pull up a chair and join the Android platform team for a fireside chat. It's your opportunity to ask us about the platform and learn a little bit more about why things work the way they do, from the people who built it. </p>
-  </div>
-  <div class="layout-content-col span-6">
-    <iframe width="355" height="200" src="//www.youtube.com/embed/A5OOJDIrYls" frameborder="0" allowfullscreen=""></iframe>
-  </div>
-</div>
-
-<div class="vspace size-2">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
-    <h3 id="design-for-success"><a href="https://developers.google.com/events/io/2013/sessions/326483138">Agile UX Research Practice in Android</a></h3>
-    <p>In the Android UX team, it is critical to get user feedback frequently and consistently so that we are able to iterate and develop the best-in-class designs for our users. We will discuss how the team applied "Pulse Studies" (iterative research sessions) in order to put new ideas, designs, and concepts in front of users on a regular basis; it requires minimal advance planning, it can have an immediate product impact, and it can meet urgent needs. </p>
-  </div>
-  <div class="layout-content-col span-6">
-    <iframe width="355" height="200" src="//www.youtube.com/embed/6MOeVNbh9cY" frameborder="0" allowfullscreen=""></iframe>
-  </div>
-</div>
-
-<div class="vspace size-2">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
-    <h3 id="design-for-success"><a href="https://developers.google.com/events/io/2013/sessions/326460111">Cognitive Science and Design</a></h3>
-    <p>This session will provide an in-depth look at human perception and cognition, and its implications for interactive and visual design. The human brain is purely treated as an information processing machine, and we will teach the audience its attributes, its advantages, its limitations, and generally how to hack it. </p>
-  </div>
-  <div class="layout-content-col span-6">
-    <iframe width="355" height="200" src="//www.youtube.com/embed/z2exxj4COhU" frameborder="0" allowfullscreen=""></iframe>
-  </div>
-</div>
-
-<img src="{@docRoot}design/media/extras_googleio_12.png">
-
-<div class="vspace size-2">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
-    <h3 id="design-for-success"><a href="https://developers.google.com/events/io/sessions/gooio2012/112/">Android Design for Success</a></h3>
-    <p>You have a great idea for an Android app. You want it to stand out among hundreds of thousands. You want your users to love it and tell everyone they know. The Android User Experience team is here to help. We talk about the Android Design guide and other tricks of the trade for creating apps that delight users and help them accomplish their goals. No design background is required.</p>
-  </div>
-  <div class="layout-content-col span-6">
-    <iframe width="355" height="200" src="//www.youtube.com/embed/2NL_83EG0no" frameborder="0" allowfullscreen=""></iframe>
-  </div>
-</div>
-
-<div class="vspace size-2">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
-    <h3 id="design-for-engineers"><a href="https://developers.google.com/events/io/sessions/gooio2012/1204/">Android Design for Engineers</a></h3>
-    <p>Design isn't black magic, it's a field that people can learn. In this talk two elite designers from Google give you an advanced crash course in interactive and visual design. Topics include mental models, natural mappings, metaphors, mode errors, visual hierarchies, typography and gestalt principles. Correctly applied, this knowledge can drastically improve the quality of your work.</p>
-  </div>
-  <div class="layout-content-col span-6">
-    <iframe width="355" height="200" src="//www.youtube.com/embed/iJDoxOTyMdk" frameborder="0" allowfullscreen=""></iframe>
-  </div>
-</div>
-
-<div class="vspace size-2">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
-    <h3 id="navigation-in-android"><a href="https://developers.google.com/events/io/sessions/gooio2012/114/">Navigation in Android</a></h3>
-    <p>An app is useless if people can't find their way around it. Android introduced big navigation-support changes in 3.0 and 4.0. The Action Bar offers a convenient control for Up navigation, the Back key's behavior became more consistent within tasks, and the Recent Tasks UI got an overhaul. In this talk, we discuss how and why we got where we are today, how to think about navigation when designing your app's user experience, and how to write apps that offer effortless navigation in multiple Android versions.</p>
-  </div>
-  <div class="layout-content-col span-6">
-    <iframe width="355" height="200" src="//www.youtube.com/embed/XwGHJJYBs0Q" frameborder="0" allowfullscreen=""></iframe>
-  </div>
-</div>
-
-<div class="vspace size-2">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
-    <h3 id="now-what"><a href="https://developers.google.com/events/io/sessions/gooio2012/115/">So You've Read the Design Guide&#59; Now What?</a></h3>
-    <p>The Android Design Guide describes how to design beautiful Android apps, but not how to build them. In this talk we give practical tips for how to apply fit &amp; finish as you implement your design, we show you how to avoid some common pitfalls, we describe some useful patterns, and show how tools can help.</p>
-  </div>
-  <div class="layout-content-col span-6">
-    <iframe width="355" height="200" src="//www.youtube.com/embed/2jCVmfCse1E" frameborder="0" allowfullscreen=""></iframe>
-  </div>
-</div>
-
-<div class="vspace size-2">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
-    <h3 id="playing-with-patterns"><a href="https://developers.google.com/events/io/sessions/gooio2012/131/">Playing with Patterns</a></h3>
-    <p>Best-in-class application designers and developers talk about their experience in developing for Android, showing screenshots from their app, exploring the challenges they faced, and offering creative solutions congruent with the Android Design guide. Guests are invited to show examples of visual and interaction patterns in their application that manage to keep it simultaneously consistent and personal.</p>
-  </div>
-  <div class="layout-content-col span-6">
-    <iframe width="355" height="200" src="//www.youtube.com/embed/8iUbr8RZKtg" frameborder="0" allowfullscreen=""></iframe>
-  </div>
-</div>
-
-<p>Videos for the entire Design Track can also be found on the <a href="http://www.youtube.com/playlist?list=PL54FA004D676C3EE9">Android Developers Channel</a> on YouTube.</p>
diff --git a/docs/html/design/wear/creative-vision.jd b/docs/html/design/wear/creative-vision.jd
index a879cf9..0955240 100644
--- a/docs/html/design/wear/creative-vision.jd
+++ b/docs/html/design/wear/creative-vision.jd
@@ -2,17 +2,19 @@
 @jd:body
 
 <style>
-div.span-13 {
-  margin:10px 0;
+.page-vision  {
+  float: left;
+  margin: 10px 0;
+  width: 100%;
 }
-div.span-13 img {
+.page-vision img {
   float:left;
   margin:2px 20px 40px 0;
 }
-div.span-13 p {
+.page-vision p {
   margin-left:167px;
 }
-div.span-13 h2 {
+.page-vision h2 {
   margin-top:0;
   }
 </style>
@@ -22,28 +24,28 @@
 Wear experiences are:</p>
 
 
-  <div class="layout-content-col span-13">
+  <div class="page-vision">
     <img src="{@docRoot}design/media/wear/vision_traffic.png" width="147" height="147" />
 
     <h2 id="Launched">Launched automatically</h2>
     <p>Most people are used to launching apps by clicking an icon. Android Wear is different. Wearable apps are aware of the user’s context - time, location, physical activity, and so on. The apps use this information to insert cards into the stream when they become relevant. This makes Android Wear timely, relevant and very specific.</p>
   </div>
 
-  <div class="layout-content-col span-13">
+  <div class="page-vision">
     <img src="{@docRoot}design/media/wear/vision_navigation.png" width="147" height="147" />
 
     <h2 id="Glanceable">Glanceable</h2>
     <p>A classic wrist watch is designed to let you see the time in a split second and get on with what you were doing. Designing for Android Wear is no different. The less time it takes to use your software, the more time the user can be present in whatever they are doing. Android wear is fast, sharp, and immediate.</p>
   </div>
 
-  <div class="layout-content-col span-13">
+  <div class="page-vision">
     <img src="{@docRoot}design/media/wear/vision_voice.png" width="147" height="147" style="border: 1px solid #ddd;" />
 
     <h2 id="SuggestDemand">All about suggest and demand</h2>
     <p>Android Wear is like a great personal assistant: it knows you and your preferences, it only interrupts you when absolutely necessary, and it’s always on hand to provide a ready answer. Android Wear is helpful, respectful, and responsive.</p>
   </div>
 
-  <div class="layout-content-col span-13">
+  <div class="page-vision">
     <img src="{@docRoot}design/media/wear/vision_music.png" width="147" height="147" />
 
     <h2 id="Interaction">Zero or low interaction</h2>
diff --git a/docs/html/design/wear/style.jd b/docs/html/design/wear/style.jd
index abd3a9a..bb559fe 100644
--- a/docs/html/design/wear/style.jd
+++ b/docs/html/design/wear/style.jd
@@ -21,26 +21,26 @@
 
 
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
 
   <img src="{@docRoot}design/media/wear/assets_specifics.png" width="300"
     style="margin:32px 0 20px;">
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
   <h2 id="Assets" style="clear:both">Specific Assets Required</h2>
 
   <p>A core set of standard assets may need to be provided depending on your card design: app icon, background image or images, action icons, and action confirmation animations. Of course, your specific design may necessitate other assets. Background images should be provided in landscape format at least 600px width for notifications that include pages of cards, since the system automatically adds a parallaxing effect.</p>
   </div>
 </div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
   <h2 id="PeekCard" style="clear:both">Peek Card Readability</h2>
 
   <p>Test your card layout to ensure that useful information is conveyed in the peek state on the Home screen. The main message of the card should be readable in the peek state, particularly for contextual cards. Content that requires an interaction to be read, for example a long message, should be cropped appropriately to provide an affordance to the user to swipe the card to read more.</p>
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
   <img src="{@docRoot}design/media/wear/peek-card.png" width="300"
     style="margin:12px 0 0 20px">
diff --git a/docs/html/design/wear/watchfaces.jd b/docs/html/design/wear/watchfaces.jd
index 2a00802..2def05b 100644
--- a/docs/html/design/wear/watchfaces.jd
+++ b/docs/html/design/wear/watchfaces.jd
@@ -55,42 +55,42 @@
 
 <p>These guidelines help your concepts align across devices:</p>
 
-<div class="layout-content-row" style="margin-top:20px">
-<div class="layout-content-col span-6">
+<div class="cols" style="margin-top:20px">
+<div class="col-6">
   <h3>Create flexible concepts</h3>
   <p>Ideally, the visual functionality of the watch face works for both round and square
   formats. In this example, the visual functionality of the watch face is flexible enough
   to work well in either format without any adjustment. However, other design concepts require
   different executions for square and round screens.</p>
 </div>
-<div class="layout-content-col span-7">
+<div class="col-7">
   <img src="{@docRoot}design/media/wear/ScreenShapes_Invert.png" width="400"
        height="221" alt="" style="margin-top:-30px">
 </div>
 </div>
 
-<div class="layout-content-row" style="margin-top:20px">
-<div class="layout-content-col span-6">
+<div class="cols" style="margin-top:20px">
+<div class="col-6">
   <h3>Use a common design language</h3>
   <p>Try using a common set of colors, line weights, shading, and other design elements
   to draw a visual connection between your square and round versions. By using similar color
   palettes and a few consistent visual elements, the overall appearance of square and round
   can be appropriately customized while still feeling like part of the same visual system.</p>
 </div>
-<div class="layout-content-col span-7">
+<div class="col-7">
   <img src="{@docRoot}design/media/wear/ScreenShapes_Pyramids.png" width="400"
        height="221" alt="" style="margin-top:-30px">
 </div>
 </div>
 
-<div class="layout-content-row" style="margin-top:20px">
-<div class="layout-content-col span-6">
+<div class="cols" style="margin-top:20px">
+<div class="col-6">
   <h3>Adjust for analog concepts</h3>
   <p>Some of your concepts will naturally take the shape of an analog clock, like a center
   dial with hour and minute hands. In this case, consider the corner areas that are exposed
   when translating to a square format. Try extending and exploring this extra space.</p>
 </div>
-<div class="layout-content-col span-7">
+<div class="col-7">
   <img src="{@docRoot}design/media/wear/ScreenShapes_Rift.png" width="400"
        height="221" alt="" style="margin-top:-30px">
 </div>
@@ -137,8 +137,8 @@
 of screen available on the device. Consider the best design for your watch faces on all
 screens.</p>
 
-<div class="layout-content-row" style="margin-top:20px">
-<div class="layout-content-col span-9">
+<div class="cols" style="margin-top:20px">
+<div class="col-9">
   <h3>Reduced color space</h3>
   <p>Some displays use a reduced color space in ambient mode to save power.</p>
   <p>One reduced color space power saving method is to use a "low-bit" mode. In low-bit mode,
@@ -152,14 +152,14 @@
   displays which do not use color in ambient mode, the background may be either black or
   white.</p>
 </div>
-<div class="layout-content-col span-4">
+<div class="col-4">
   <img src="{@docRoot}design/media/wear/Render_LowBit.png" width="200"
        height="" alt="" style="margin-top:45px;margin-left:13px">
 </div>
 </div>
 
-<div class="layout-content-row" style="margin-top:20px">
-<div class="layout-content-col span-9">
+<div class="cols" style="margin-top:20px">
+<div class="col-9">
   <h3>Burn protection techniques</h3>
   <p>When designing for OLED screens, you should consider power efficiency and the screen
   burn-in effect. When these screens are in ambient mode, the system shifts the contents of
@@ -169,7 +169,7 @@
   replace filled images with pixel patterns. For analog watch face designs, hollow out the center
   where the hands meet to avoid pixel burn-in in this mode.</p>
 </div>
-<div class="layout-content-col span-4">
+<div class="col-4">
   <img src="{@docRoot}design/media/wear/Render_1Bit.png" width="200"
        height="" alt="" style="margin-top:-10px;margin-left:13px">
 </div>
@@ -183,8 +183,8 @@
 user the status of the wearable and show notifications from services on the user's phone. Try
 to keep critical elements in your watch face designs from being obscured by the UI elements.</p>
 
-<div class="layout-content-row" style="margin-top:20px">
-<div class="layout-content-col span-9">
+<div class="cols" style="margin-top:20px">
+<div class="col-9">
   <h3>Cards</h3>
 <p>Cards are the notification system that bridges information between the wearable and a
 mobile device. Cards are also how most applications communicate with users. The user will be
@@ -202,14 +202,14 @@
 <p>The system notifies your watch face when the bounds of a peek card change, so you can
 rearrange the elements in your design if necessary.</p>
 </div>
-<div class="layout-content-col span-4">
+<div class="col-4">
   <img src="{@docRoot}design/media/wear/CardsRender_Build.png" width="200"
        height="" alt="" style="margin-top:20px;margin-left:13px">
 </div>
 </div>
 
-<div class="layout-content-row" style="margin-top:20px">
-<div class="layout-content-col span-9">
+<div class="cols" style="margin-top:20px">
+<div class="col-9">
   <h3>Indicators</h3>
 <p>Indicators tell the user the status of the wearable, such as charging and airplane mode.
 When designing a watch face, consider how the indicator will fall over the watch face.</p>
@@ -219,14 +219,14 @@
 peek cards. If the edge of the watch face contains strong visual elements, such as
 ticks or numbers, place the indicators on the center of the screen.</p>
 </div>
-<div class="layout-content-col span-4">
+<div class="col-4">
   <img src="{@docRoot}design/media/wear/Indicators_Cropped.png" width="200"
        height="" alt="" style="margin-top:0px;margin-left:13px">
 </div>
 </div>
 
-<div class="layout-content-row" style="margin-top:20px">
-<div class="layout-content-col span-9">
+<div class="cols" style="margin-top:20px">
+<div class="col-9">
   <h3>The hotword</h3>
 <p>The hotword is the phrase "OK Google", which tells the user that they can interact with
 the watch using voice commands. When a user turns on the wearable, the hotword appears on
@@ -237,7 +237,7 @@
 turned on unless your design is tailored to have these elements appear on top of them, for example
 using dark solid colors with no patterns.</p>
 </div>
-<div class="layout-content-col span-4">
+<div class="col-4">
   <img src="{@docRoot}design/media/wear/Hotword_Cropped.png" width="200"
        height="" alt="" style="margin-top:0px;margin-left:13px">
 </div>
@@ -253,8 +253,8 @@
 <p>Your watch face can show users contextually relevant data and react to it by changing styles
 and colors in your design.</p>
 
-<div class="layout-content-row" style="margin-top:20px">
-<div class="layout-content-col span-9">
+<div class="cols" style="margin-top:20px">
+<div class="col-9">
   <h3>What do you want your user to know?</h3>
 <p>The first step in designing a data-integrated watch face is to define a conceptual user
 outcome based on available data. First, generate a strong concept or outcome you believe is
@@ -262,14 +262,14 @@
 at your design? Once you have identified your outcome, you need to determine how to obtain
 the required data.</p>
 </div>
-<div class="layout-content-col span-4">
+<div class="col-4">
   <img src="{@docRoot}design/media/wear/Render_Saturn.png" width="200"
        height="" alt="" style="margin-top:-10px;margin-left:13px">
 </div>
 </div>
 
-<div class="layout-content-row" style="margin-top:20px">
-<div class="layout-content-col span-9">
+<div class="cols" style="margin-top:20px">
+<div class="col-9">
   <h3>A watch dial is a timeline; add data to it</h3>
 <p>Your watch face concept may include use of data beyond time, such as weather, calendar
 and fitness data. Consider the inclusion of data integration creatively. Avoid simply
@@ -279,14 +279,14 @@
 you might design a watch face that describes how the temperature will change over the
 course of the day.</p>
 </div>
-<div class="layout-content-col span-4">
+<div class="col-4">
   <img src="{@docRoot}design/media/wear/Render_Episode.png" width="200"
        height="" alt="" style="margin-top:-10px;margin-left:13px">
 </div>
 </div>
 
-<div class="layout-content-row" style="margin-top:20px">
-<div class="layout-content-col span-9">
+<div class="cols" style="margin-top:20px">
+<div class="col-9">
   <h3>Stick to one message</h3>
 <p>Once you have solidified your conceptual direction or desired outcome, you will need to
 begin visualizing your watch face. The strongest watch face designs are highly glanceable
@@ -296,7 +296,7 @@
 upcoming event. By a process of reduction, you should arrive at a powerful singular
 expression of data to include in your design.</p>
 </div>
-<div class="layout-content-col span-4">
+<div class="col-4">
   <img src="{@docRoot}design/media/wear/Render_Albumem.png" width="200"
        height="" alt="" style="margin-top:-10px;margin-left:13px">
 </div>
diff --git a/docs/html/develop/index.jd b/docs/html/develop/index.jd
index e89e228..4ba0b09 100644
--- a/docs/html/develop/index.jd
+++ b/docs/html/develop/index.jd
@@ -9,378 +9,121 @@
 excludeFromSuggestions=true
 @jd:body
 
-<style>
-#noplayer-message {
-position:absolute;top:50%;left:0;width:100%;z-index:-1;text-align:center;display:none;
-}
-#player-frame object {z-index:1;}
-</style>
-
-<div id="player-wrapper">
-  <div id="player-frame">
-    <div id="noplayer-message">
-      <!-- busted flash player message -->
-      Your video is supposed to appear here.<br/>
-      Make sure you have the <a href="http://get.adobe.com/flashplayer/" target="_blank">Flash&reg; Player</a>.
+<section class="dac-expand dac-hero dac-section-light">
+  <div class="wrap">
+    <div class="cols dac-hero-content">
+      <div class="col-1of2 col-push-1of2 dac-hero-figure">
+        <img class="dac-hero-image" src="{@docRoot}images/develop/hero_image_studio5_2x.png"
+          srcset="/images/develop/hero_image_studio5.png 1x, /images/develop/hero_image_studio5_2x.png 2x" />
+      </div>
+      <div class="col-1of2 col-pull-1of2">
+        <h1 class="dac-hero-title">Get Started with Android Studio</h1>
+        <p class="dac-hero-description">
+        Everything you need to build incredible app experiences on phones and tablets, Wear, TV, and Auto. </p>
+        </p>
+        <a class="dac-hero-cta" href="{@docRoot}sdk/index.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Set up Android Studio
+        </a><br>
+        <a class="dac-hero-cta" href="{@docRoot}training/basics/training/index.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Build your first app
+        </a><br>
+        <a class="dac-hero-cta" href="{@docRoot}guide/index.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Learn about Android
+        </a><br>
+        <a class="dac-hero-cta" href="{@docRoot}samples/index.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Sample projects
+        </a><br>
+      </div>
     </div>
-    <div id="player"><!-- Youtube embeds here... actually replaces this div --></div>
-    <a class="close" onclick="$('#player-wrapper').hide()">close video</a>
+    <!--<div class="dac-section dac-small">
+      <div class="resource-widget resource-flow-layout col-16"
+           data-query="collection:develop/landing/mainlinks"
+           data-cardSizes="6x2"
+           data-maxResults="6"></div>
+    </div>-->
   </div>
-</div>
-<div class="wrap">
-   <!-- Slideshow -->
-   <div class="slideshow-container slideshow-develop col-16">
-       <a href="" class="slideshow-prev">Prev</a>
-       <a href="" class="slideshow-next">Next</a>
-       <div class="frame">
-           <ul>
-
-              <li class="item carousel-home">
-                 <div class="col-8">
-                   <img 
-                   style="max-height: 250px; margin-top:5px;
-                   margin-left: 30px; max-width: 451px;"
-src="{@docRoot}design/tv/images/focus.png"
-class="play no-shadow no-transform" />
-                 </div>
-                <div class="content-right col-6">
-                  <h2>Create Quality Apps for TV</h2>
-                  <p>Now that the Android platform has
-                  extended to TVs, your apps on Google Play have
-                  a new opportunity for engagement in the
-                  living room. To provide the best
-                  "leanback" experience on the couch, follow
-                  this quality checklist.</p>
-                  <p><a
-href="{@docRoot}distribute/essentials/quality/tv.html" class="button">Read
-more</a></p>
-                </div>            
-              </li>
-
-              <li class="item carousel-home">
-                 <div class="col-8">
-                   <img
-src="//lh4.ggpht.com/-lfjzgG5Dqrk/UHMThRtpRwI/AAAAAAAABpk/h4d3nsmkgPM/s400/mint.png"
-class="play no-shadow no-transform" />
-                 </div>
-                <div class="content-right col-6">
-                  <h2>Building Great Apps for Tablets</h2>
-                  <p>Tablets are a fast-growing part of the Android installed base and they offer new opportunities for user engagement and monetization. If you are targeting tablets, check out this list of tips and techniques on how to deliver a great app experience for tablet users.  </p>
-                  <p><a
-href="//android-developers.blogspot.com/2012/11/designing-for-tablets-were-here-to-help.html" class="button">Read
-more</a></p>
-                </div>            
-              </li>
-              <li class="item carousel-home">
-                 <div class="col-8">
-                   <img src="{@docRoot}images/google/gps-location.png"
-class="play no-shadow no-transform" style="margin:0 0 0 70px;height:230px;width:340px" />
-                 </div>
-                <div class="content-right col-6" style="width:350px">
-                  <h2>New Location APIs from Google</h2>
-                  <p>The latest version of Google Play services includes new APIs that provide more
-                  efficient and immediate user location data on devices running Android 2.2
-                  and higher. Features include geofencing APIs, user activity recognition, and
-                  power-efficient location updates.</p>
-                  <p><a
-href="{@docRoot}google/play-services/location.html" class="button">Read more</a></p>
-                </div>
-              </li>
-
-              <li class="item carousel-home">
-                 <div class="col-8">
-                   <img src="{@docRoot}images/google/gps-plus-signin-hero.jpg"
-class="play no-shadow no-transform" style="margin:0 0 0 40px;max-height:250px;height:250px;
-                                           max-width:409px;width:409px" />
-                 </div>
-                <div class="content-right col-6" style="width:350px">
-                  <h2>New Cross-Platform Single Sign On</h2>
-                  <p>Google+ Sign-In is an easy, trusted way to sign a user into your app.
-                  Now it's even more seamless. A user can sign in to your app on one device and
-                  pick it up on another&mdash;without signing in again. Best of all, it's built
-                  into Google+ Sign-in, so there's no change needed in your app.</p>
-                  <p><a
-href="{@docRoot}google/play-services/plus.html" class="button">Read more</a></p>
-                </div>
-              </li>
-
-              <li class="item carousel-home">
-                 <div class="col-8">
-                   <img src="{@docRoot}images/google/maps-v2-trulia-n7.png"
-class="play no-shadow no-transform" style="margin:0 0 0 40px;max-height:250px;height:250px;
-                                           max-width:409px;width:409px" />
-                 </div>
-                <div class="content-right col-6" style="width:350px">
-                  <h2>New Google Maps Android APIs!</h2>
-                  <p>Google Maps Android API version 2 is now available with enhanced
-                    features such as 3D buildings, vector-based map tiles, rich overlay capabilities,
-                    indoor maps, support for fragments, and much more.</p>
-                    
-                  <p>The APIs are bundled with Google Play services and are
-                  compatible with Android 2.2 and higher.</p>
-                  <p><a
-href="{@docRoot}google/play-services/maps.html" class="button">Read more</a></p>
-                </div>            
-              </li>
-           </ul>
-       </div>
-   </div>
-   <!-- /End slideshow -->
-</div>
-<div class="wrap">
-	<!-- news and feature feed -->
-	<div class="feed col-8" style="margin-left:0">
-		<ul class="feed-nav">
-			<li class="active">DEVELOPER NEWS</li>
-			<li>FEATURED DOCS</li>
-		</ul>
-		<div class="feed-container">
-			<div class="feed-frame">
-                                <!-- DEVELOPER NEWS -->
-          <ul>
-            <li><a href="//android-developers.blogspot.com/2013/07/making-beautiful-android-app-icons.html">
-              <div class="feed-image" style="background:url('//2.bp.blogspot.com/-HfoO6KNFBKA/UeiyRoELb7I/AAAAAAAAAFs/bHR-5viktU4/s1000/icons.png') no-repeat 0 0;background-size:500px;background-position:center center;"></div>
-              <h4>Making Beautiful Android App Icons</h4>
-              <p>As higher density screens gain popularity, it's important to make sure your launcher icon is crisp and high quality...</p>
-              </a></li>
-            <li><a href="//android-developers.blogspot.com/2013/07/beautiful-design-collection-summer-2013.html">
-              <div class="feed-image" style="background:url('//1.bp.blogspot.com/-k8DZYu0daT4/UdRt1AzstvI/AAAAAAAAAFM/CvEkb2yh-i0/s965/beautifulapps_4.png') no-repeat 0 0"></div>
-              <h4>The Beautiful Design Summer 2013 Collection</h4>
-              <p>See the apps chosen by the Android Design team for their masterfully crafted design details...</p>
-              </a></li>
-            <li><a href="//android-developers.blogspot.com/2013/10/new-developer-features-in-google-play.html">
-              <div class="feed-image" style="background:url('//3.bp.blogspot.com/-k33rf398Lqw/UlRUMQQRUNI/AAAAAAAAClM/pSwz2YgQpmY/s1600/gps-play_games_logo.png') no-repeat 0 0;background-size:130px;background-position:8px -4px;"></div>
-              <h4>New Features in Google Play Games</h4>
-              <p>Three new features that make it easier to understand what players are doing in your game and help you manage game features...</p>
-            </a></li>
-            <li><a href="//android-developers.blogspot.com/2013/05/new-ways-to-optimize-your-business-in.html">
-              <div class="feed-image" style="background:url('//3.bp.blogspot.com/-_8WvpdTVGsE/UkxxxrVoNNI/AAAAAAAACj8/FrQyA-BO11c/s1600/gp-referral-ga.png') no-repeat 0 0;background-size:180px"></div>
-              <h4>Linking Google Analytics with Google Play</h4>
-              <p>Understanding your users easier through a new integration between Google Analytics and the Google Play Developer Console...</p>
-              </a></li>
-          </ul>
-                                <!-- FEATURED DOCS -->
-          <ul>
-            <li><a href="{@docRoot}distribute/googleplay/spotlight/tablets.html">
-              <h4>Tablet Stories</h4>
-              <p>More developers are investing in a full tablet experience for their apps. Here are some stories from developers who are seeing real results as they expand their offering to include Android tablets. </p>
-              </a></li>
-            <li><a href="{@docRoot}distribute/googleplay/quality/core.html">
-              <h4>Core App Quality Guidelines</h4>
-              <p>This document helps you assess basic aspects of quality in your app through a compact set of core app quality criteria and associated tests. All Android apps should meet these criteria.</p>
-              </a></li>
-            <li><a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">
-              <h4>Updated Notifications API Guide</h4>
-              <p>The Notifications API Guide is updated to include information about building Jelly Bean rich notifications using the Support Library APIs for backwards-compatibility.</p>
-              </a></li>
-            <li><a href="{@docRoot}guide/topics/ui/dialogs.html">
-              <h4>Updated Dialogs API Guide</h4>
-              <p>The Dialogs API Guide now shows to use DialogFragment class, a simpler way to manage your dialogs and embed them in alternative layouts.</p>
-              </a></li>                                      
-          </ul>
-			</div>
-		</div>
-	</div>	<!-- /news and feature feed -->
-	<!-- video feed -->
-	<div class="feed col-8" style="margin-right:0">
-		<ul class="feed-nav">
-			<li class="active">DEVELOPERS LIVE</li>
-			<li>VIDEO PLAYLISTS</li>
-		</ul>
-		<div class="feed-container">
-			<div class="feed-frame">
-              <ul id="DevelopersLive">
-              </ul>
-              <ul id="VideoPlaylists">
-              </ul>
-			</div>
-		</div>
-	</div>
-	<!-- /video feed -->
+</section>
+<div class="wrap dac-offset-parent">
+  <a class="dac-fab dac-scroll-button" data-scroll-button href="#latest">
+    <i class="dac-sprite dac-arrow-down-gray"></i>
+  </a>
 </div>
 
-<br class="clearfix"/>
+<section class="dac-section dac-gray dac-small dac-invert" id="latest"><div class="wrap">
+  <h2 class="norule">Latest</h2>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:develop/landing/latest"
+       data-cardSizes="6x6"
+       data-maxResults="3"></div>
+</div></section>
 
-      
-      
-      
-      
-      
-      
-      
-      
+<section class="dac-section dac-light"><div class="wrap">
+  <h1 class="dac-section-title">Tools for building apps</h1>
+  <div class="dac-section-subtitle">
+    Insights into Android's tools and libraries to speed your development.
+  </div>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:develop/landing/tools"
+       data-cardSizes="6x6"
+       data-maxResults="3"
+       data-sortOrder="random"></div>
+  <ul class="dac-section-links">
+  </ul>
+</div></section>
 
-<script src="//swfobject.googlecode.com/svn/trunk/swfobject/swfobject.js" type="text/javascript"></script>
-<script type="text/javascript">
+<section class="dac-section dac-section-light"><div class="wrap">
+  <h1 class="dac-section-title">Android performance patterns</h1>
+  <div class="dac-section-subtitle">
+    Everything you need to know about improving your app’s performance.
+  </div>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:develop/landing/performance"
+       data-cardSizes="6x6"
+       data-maxResults="3"></div>
+  <ul class="dac-section-links">
+    <li class="dac-section-link"><a href="https://www.youtube.com/playlist?list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Playlist
+    </a></li>
+  </ul>
+</div></section>
 
-/* Load a video into the player box.
- * @param id        The YouTube video ID
- * @param title     The video title to display in the player box (character escaped)
- * @param autoplay  Whether to automatically play the video
- */
-function loadVideo(id, title, autoplay) {
-  swfobject.embedSWF('//www.youtube.com/v/' + id + '&rel=1&border=0&fs=1&autoplay=' +
-      (autoplay?1:0), 'player', '525', '330', '9.0.0', false, false, {allowfullscreen: 'true'});
-  $("#videoPlayerTitle").html("<h2>" + unescape(title) + "</h2>");
-  $("#player-wrapper").show();
-  setTimeout(function(){$('#noplayer-message').show()}, 2000);
-}
+<section class="dac-section dac-gray"><div class="wrap">
+  <h1 class="dac-section-title">Ubiquitous computing on Android</h1>
+  <div class="dac-section-subtitle">
+    Opening up new stuff.
+  </div>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:develop/landing/ubicomp"
+       data-cardSizes="6x6"
+       data-maxResults="3"></div>
+  <ul class="dac-section-links">
+    <li class="dac-section-link"><a href="/wear/index.html">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Wear
+    </a></li>
+    <li class="dac-section-link"><a href="/tv/index.html">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      TV
+    </a></li>
+    <li class="dac-section-link"><a href="/auto/index.html">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Auto
+    </a></li>
+  </ul>
+</div></section>
 
-/* Draw all videos from a playlist into a 'videoPreviews' list
- * @param data  The feed data returned from the youtube request
- */
-function renderVideoPlaylists(data) {
-  var MAX_LIST_DESC_LENGTH = 130; // the length at which we will trim the description
-  var MAX_VIDEO_DESC_LENGTH = 100; // the length at which we will trim the description
-  var MAX_LIST_LENGTH = 4; // number of videos to put in the list
-  var feed = data.feed;
-  var entries = feed.entry || [];
-  var playlistId = feed.yt$playlistId.$t;
-
-  var $ulVideos = $('<ul style="display:none"/>');
-  var summary = feed.media$group.media$description != null ? feed.media$group.media$description.$t : feed.subtitle.$t;
-  
-  var $liPlaylist = $('<li class="playlist"></li>');
-  var $aPlaylist = $('<a href="" onclick="togglePlaylist(this);return false;"></a>');
-  $liPlaylist.append($aPlaylist);
-  $aPlaylist.append('<h4>' + feed.title.$t + '</h4>');
-  
-  var playlistDescription = summary.substr(0, MAX_LIST_DESC_LENGTH);
-  playlistDescription += playlistDescription.length == MAX_LIST_DESC_LENGTH ? "..." : ""; // add ellipsis if we've chopped the description
-  $aPlaylist.append('<p>' +  playlistDescription + '</p>');
-  
-  // Loop through each entry (each video) and add it to the 'videoPreviews' list
-  var length = feed.entry.length < MAX_LIST_LENGTH ? feed.entry.length : MAX_LIST_LENGTH; // max of 4 videos per list
-  for (var i = 0; i < length; i++) {
-    var entry = entries[i];
-
-    var title = entry.title.$t;
-    var id = entry.media$group.yt$videoid.$t;
-    var thumbUrl = entry.media$group.media$thumbnail[0].url;
-    var fullDescription = entry.media$group.media$description.$t;
-    var playerUrl = entry.media$group.media$content[0].url;
-
-    var shortDescription = fullDescription.substr(0, MAX_VIDEO_DESC_LENGTH);
-    shortDescription += shortDescription.length == MAX_VIDEO_DESC_LENGTH ? "..." : ""; // add ellipsis if we've chopped the description
-
-    var img = $('<img src="' + thumbUrl + '" width="60" height="45"/>');
-    var a = $('<a href="#" onclick="loadVideo(\'' + id + '\',\'' + escape(title) + '\',true); return false;" />');
-    var pShortDescription = $('<p>' + shortDescription + '</p>');
-    var h5Title = "<h5>" + title + "</h5>";
-    var li = $('<li class="playlist-video"/>');
-
-    li.append(a);
-    a.append(img).append(h5Title).append(pShortDescription);
-
-    $ulVideos.append(li);
-    
-    // use the first entry's thumbnail for the playlist
-    if (i == 0) {
-      $aPlaylist.prepend('<img src="' + thumbUrl + '" width="120" height="90"/>');
-    }
-  }
-  
-  if (feed.entry.length > MAX_LIST_LENGTH) {
-    // add item to go to youtube for playlist
-    $ulVideos.append('<li class="more"><a href="//www.youtube.com/playlist?list=' + playlistId + '">More &raquo;</a></li>');
-  }
-
-  $liPlaylist.append($ulVideos);
-  $('#VideoPlaylists').append($liPlaylist);
-}
-
-
-function renderDevelopersLivePlaylist(data) {
-
-  var MAX_DESC_LENGTH = 125; // the length at which we will trim the description
-  var feed = data.feed;
-  var entries = feed.entry || [];
-  var playlistId = feed.yt$playlistId.$t;
-
-  var ul = $('#DevelopersLive');
-
-  // Loop through each entry (each video) and add it to the '#DevelopersLive' list
-  for (var i = 0; i < 4; i++) {
-    var entry = entries[i];
-
-    var title = entry.title.$t;
-    var id = entry.media$group.yt$videoid.$t;
-    var thumbUrl = entry.media$group.media$thumbnail[0].url;
-    var fullDescription = entry.media$group.media$description.$t;
-    var playerUrl = entry.media$group.media$content[0].url;
-    var shortDescription = fullDescription.substr(0, MAX_DESC_LENGTH);
-    shortDescription += shortDescription.length == MAX_DESC_LENGTH ? "..." : ""; // add ellipsis if we've chopped the description
-
-    var img = $('<img src="' + thumbUrl + '" width="120" height="90"/>');
-    var a = $('<a href="#" onclick="loadVideo(\'' + id + '\',\'' + escape(title) + '\',true); return false;" />');
-    var pShortDescription = $('<p>' + shortDescription + '</p>');
-    var h4Title = "<h4>" + title + "</h4>";
-    var li = $('<li/>');
-
-    li.append(a);
-    a.append(img).append(h4Title).append(pShortDescription);
-
-    ul.append(li);
-  }
-}
-
-/* This 'playlist' object defines the playlist IDs for each tab.
- * Each name inside 'playlist' corresponds to class names for the tab that the playlists belong to (eg: "googleioTab" and "googleioBox" divs).
- * Each string in 'ids' is the ID of a YouTube playlist that belongs in the corresponding tab.
- */
-var playlists = {
-  'designinaction' : {
-    'ids': ["PLWz5rJ2EKKc8j2B95zGMb8muZvrIy-wcF"]
-  },
-  'bizdevbytes' : {
-    'ids': ["PLWz5rJ2EKKc8-Osr0TuHyTMEhKV0xJ6ql"]
-  },
-  'thisweek' : {
-    'ids': ["PLWz5rJ2EKKc9Wam5jE-9oY8l6RpeAx-XM"]
-  },
-  'googleio' : {
-    'ids': ["PLWz5rJ2EKKc9WGUwq2gQ-coU3fSyexgOx"]
-  }
-};
-
-/* Request the playlist feeds from YouTube */
-function showVideosPlaylists() {
-  for (var x in playlists) {
-    var ids = playlists[x].ids;
-    for (var i in ids) {
-      var script = "<script type='text/javascript' src='//gdata.youtube.com/feeds/api/playlists/"
-                    + ids[i] +
-                    "?v=2&alt=json-in-script&max-results=50&callback=renderVideoPlaylists&orderby=position'><\/script>";
-      $("body").append(script);
-    }
-  }
-}
-
-
-/* Request the playlist feeds from YouTube */
-function showDevelopersLivePlaylist() {
-  var playlistId = "PLWz5rJ2EKKc_XOgcRukSoKKjewFJZrKV0"; /* DevBytes */
-  var script = "<script type='text/javascript' src='//gdata.youtube.com/feeds/api/playlists/"
-                + playlistId +
-                "?v=2&alt=json-in-script&max-results=10&callback=renderDevelopersLivePlaylist&orderby=position'><\/script > ";
-  $("body").append(script);
-}
-
-
-function togglePlaylist(listLink) {
-  var $list = $(listLink).parent();
-  var $ul = $list.find('ul');
-  if ($ul.is(":visible")) {
-    $ul.slideUp(function() {
-      $list.css({'height':'inherit'});
-    });
-  } else {
-    $list.closest('ul').find('li.playlist').find('ul').slideUp();
-    $ul.slideDown();
-    $list.css({'height':'auto'});
-  }
-}
-
-showDevelopersLivePlaylist();
-showVideosPlaylists();
-</script>
+<section class="dac-section dac-light" id="courses"><div class="wrap">
+  <h1 class="dac-section-title">Online Courses</h1>
+  <div class="dac-section-subtitle">Free online courses from Android
+    experts that bring you step-by-step to building your own apps.</div>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:develop/landing/courses"
+       data-sortOrder="random"
+       data-cardSizes="6x6"
+       data-maxResults="6"></div>
+</div></section>
diff --git a/docs/html/distribute/analyze/index.jd b/docs/html/distribute/analyze/index.jd
index d8ab59e..c40a699 100644
--- a/docs/html/distribute/analyze/index.jd
+++ b/docs/html/distribute/analyze/index.jd
@@ -1,5 +1,6 @@
 page.title=Analyze
 page.metaDescription=Understanding what your users do inside your app is the key to engaging and monetizing them.
+page.image=images/cards/analytics-mobile_2x.jpg
 section.landing=true
 excludefromsuggestions=true
 nonavpage=true
@@ -30,11 +31,8 @@
   data in AdMob</a> and have the full picture of your app revenue.
 </p>
 
-<div class="dynamic-grid">
-
   <div class="resource-widget resource-flow-layout landing col-16"
     data-query="collection:distribute/analyzelanding"
     data-cardSizes="6x6"
     data-maxResults="10">
   </div>
- 
\ No newline at end of file
diff --git a/docs/html/distribute/analyze/start.jd b/docs/html/distribute/analyze/start.jd
index 2a5a9f4..c3a1f87 100644
--- a/docs/html/distribute/analyze/start.jd
+++ b/docs/html/distribute/analyze/start.jd
@@ -1,7 +1,7 @@
 page.title=Get Started with Analytics
 page.metaDescription=Unlock the power of Analytics by choosing the implementation that works best for your app.
 page.tags="analytics, user behavior"
-page.image=distribute/images/gp-analytics-logo.jpg
+page.image=images/cards/card-analytics_2x.png
 
 
 @jd:body
diff --git a/docs/html/distribute/analyze/understand-user-value.jd b/docs/html/distribute/analyze/understand-user-value.jd
index 30dca9c..e561941 100644
--- a/docs/html/distribute/analyze/understand-user-value.jd
+++ b/docs/html/distribute/analyze/understand-user-value.jd
@@ -71,6 +71,53 @@
 <img src="{@docRoot}distribute/analyze/images/demographics.png">
 </div>
 
+<h2 id="change">All Things Change with Time, and So Do Your Users</h2>
+
+<p>
+  Getting users to install and open your app the first time is a big accomplishment;
+  however, it’s only the first step of what is hopefully a long and prosperous
+  relationship. The best apps aren’t just the ones with the most downloads, they are
+  the ones that have users coming back day after day, month after month, and year
+  after year.
+</p>
+
+<p>
+  Google Analytics takes a user-centric approach to reporting to help you explore what
+  keeps users coming back. <strong>Cohort Reporting</strong> allows you to see which users
+  come back over time and when usage tends to fall off. You can easily take this same
+  information and overlay it on any other report.
+</p>
+
+<div>
+<img src="{@docRoot}distribute/analyze/images/cohort_reporting.png">
+</div>
+
+<h2 id="measure-value">Measure Value over Time</h2>
+
+<p>
+  Analyzing retention is a great way to ensure users stick with your app and come back day after
+  day. With <strong>Lifetime Value</strong> reporting, you’ll get a full picture of these users’
+  value over time. To get the most out of this report, it’s important to start with a clear
+  definition of what a user’s value means to you based on your business objectives.
+</p>
+
+<p>
+  Once you’ve defined the value, you can access the report to measure certain variables such as
+  revenue per user and number of screen views per user over a period of 90 days. For example, if
+  the goal of your app is to get users to purchase virtual or material goods, you’ll want to use
+  this report to get a clear view of when they make a purchase and how much they are spending in
+  your app over time.
+</p>
+
+<p>
+  Lifetime Value is a key metric to use to measure the effectiveness of your acquisition
+  campaigns. If your cost to acquire a new user is higher than the average value over time,
+  you might want to optimize your campaigns to meet the lifetime revenue they generate. Lifetime
+  Value is particularly valuable if you offer in-app purchases, but it can be applied to
+  discovering many other useful insights, such as number of times they open your app, total
+  number of screens and goal completions.
+</p>
+
 <h2 id="cohort">Segment Your Data</h2>
 
 <p>
diff --git a/docs/html/distribute/engage/ads.jd b/docs/html/distribute/engage/ads.jd
new file mode 100644
index 0000000..ad6940f
--- /dev/null
+++ b/docs/html/distribute/engage/ads.jd
@@ -0,0 +1,63 @@
+page.title=Drive engagement with AdWords Ads
+page.metaDescription=Keep users coming back. AdWords offers re-engagement tools to help your app stay top of mind with users.
+page.tags="engagement, adwords"
+page.image=images/cards/adwords_2x.jpg
+@jd:body
+
+<p>Successful apps keep users coming back again and again. AdWords offers app
+re-engagement tools to help your app stay top of  mind with users who’ve
+already installed it on their phone. AdWords can remind them of key features
+and encourage them to try your app again, or help them complete an activity
+they didn't know your app could handle.</p>
+
+<p>
+  <a href="https://support.google.com/adwords/answer/6032073">Get started with AdWords mobile
+  app engagement campaigns</a>.
+</p>
+
+
+
+<div class="wrap">
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-1of2">
+   <h3>From search</h3>
+   <img src="/images/distribute/promote_ads.png">
+    <p class="figure-caption">Add deep links to your app, then bring users straight
+    to relevant app content when they’re searching.</p>
+    </div>
+    <div class="col-1of2">
+    <h3>From apps</h3>
+    <img src="/images/distribute/promote_ads_inapp.png">
+    <p class="figure-caption">Use remarketing and deep links to bring users to just the right
+    place in your app to re-engage and convert, from other apps and games they love.</p>
+    </div>
+  </div>
+</div>
+
+
+<h3 id="tips">Tips</h2>
+
+<ul>
+  <li> Track what users do in your app after they click an ad, by installing the
+    AdWords <a href="https://developers.google.com/app-conversion-tracking/">conversion tracking
+    SDK</a>.
+  <li> Advertise a compelling reason for users to re-engage with your app, such as a
+    reminder or a special offer.
+  <li> <a href="https://developers.google.com/app-indexing/webmasters/app">Add deep links</a> to
+    your app and bring users directly to the most relevant and interesting
+    parts of your app, where they can easily take action.
+  <li> Re-engage with your app users across the Display Network with remarketing lists
+and search with keywords.
+  <li> Use remarketing lists to target high value users so that you can drive more
+conversions in your app.
+</ul>
+
+<h2 id="related_resources">Related resources</h2>
+
+<div class="resource-widget resource-flow-layout col-13" 
+  data-query="collection:distribute/engage/reengage"
+  data-sortorder="-timestamp"
+  data-cardsizes="9x3"
+  data-maxresults="6">
+</div>
+
diff --git a/docs/html/distribute/engage/deep-linking.jd b/docs/html/distribute/engage/deep-linking.jd
index a25c3c6..701cb99 100644
--- a/docs/html/distribute/engage/deep-linking.jd
+++ b/docs/html/distribute/engage/deep-linking.jd
@@ -1,99 +1,75 @@
-page.title=Deep Link to Bring Users Back
-page.metaDescription=Use deep links to bring your users into your apps from social posts, search, or ads.
-page.tags="app indexing, google+ signin"
-page.image=/images/gp-listing-4.jpg
-
+page.title=Increase Usage with Search
+page.metaDescription=Use search to bring your existing users back into your app.
+page.image=images/cards/google-search_2x.png
+page.tags=engagement, appindexing, search
 @jd:body
 
 <p>
-  Use deep links to bring your users into your apps from social posts,
-  search, or ads.
-</p>
-
-<div class="headerLine">
-<h2>Deep Linking from Google+ Posts</h2>
-</div>
-
-<p>
-  <a href="https://developers.google.com/+/mobile/android/share/deep-link">Deep
-  linking</a> allows the Google+ apps on mobile devices to direct clicks on a
-  shared post that contains deep-link information to a resource within your
-  apps.
-</p>
-
-<p style="margin-bottom:2em;">
-  If the user doesn’t have your app installed, they’re prompted to install it
-  before accessing the resource.
-</p>
-
-<div style="padding:2em, auto;width:550px;">
-  <div style="float:right; width:260px; padding-left:1em;">
-    <img src="{@docRoot}images/gp-engage-5.jpg" class="border-img">
-    <p class="img-caption">
-      G+ Post with Deep Link to Buy
-    </p>
-  </div>
-
-  <div style="width:260px;float:left;">
-    <img src="{@docRoot}images/gp-engage-6.jpg" class="border-img">
-    <p class="img-caption">
-      Purchase page within app
-    </p>
-  </div>
-</div>
-
-
-<div class="headerLine">
-<h2>Deep Linking from Google Search &mdash; App Indexing</h2>
-</div>
-
-
-<div style="float:right;">
-  <img src="/images/gp-listing-4.jpg" style="padding-top:1em;padding-left:2em;">
-</div>
-
-<p>
-  Another way to bring users back to your apps is to apply for app indexing.
+  Users who have your app installed might overlook it as a way to get the answers
+  they need. With App Indexing, deep links to your Android app appear in Google Search
+  results so users can get to your native mobile experience quickly, landing exactly
+  on the right content within the app. 
 </p>
 
 <p>
-  When a user searches for content available within your app, Google can show
-  an "Open in App" button in in mobile search results. For instance, if a user
-  searches for a restaurant and you’ve got that establishment in your dining
-  app, a link can be shown to open the page within your app. Learn more about
-  <a href="https://developers.google.com/app-indexing/">linking to in-app
-  content</a>.
-</p>
+  Google Search for developers can also help you re-engage your users in other ways
+  &mdash; by letting them interact with your app from a voice action, get deep into
+  your app from a search suggestion, or go back to your email reminders in Google Now. </p>
 
-<div class="clearfloat" style="margin-top:2em;"></div>
 
-<div style="float:right;width:340px;padding-left:2em;">
-  <img src="/images/gp-ads-linking2.jpg" style="padding-top:1em;">
+<p>Get started by <a href="https://developers.google.com/app-indexing/">indexing your
+app</a> and then take advantage of <a
+href="https://developers.google.com/voice-actions/">Voice actions</a>, the
+<a href="https://developers.google.com/app-indexing/webmasters/appindexingapi">App
+Indexing API</a>, and <a href="https://developers.google.com/schemas/now/cards">Google
+Now cards</a>.</p>
+
+
+<h2 id="help_users_find_your_information">App Indexing</h2>
+
+<p>Re-engage with your users with deep-links displayed in search results, links
+that take users directly to content within your app.</p>
+
+
+<div style="margin:1em">
+<img src="{@docRoot}images/distribute/app-indexing-deep-links.png">
+</div>
+<h2 id="empower_users_in_your_app">Voice actions</h2>
+
+<p>Brings your users into your app with voice actions such as “Ok
+Google, play a song” or “Ok Google, search for
+hotels in Maui on TripAdvisor”.</p>
+
+<div style="margin-top:1em">
+<img src="{@docRoot}images/distribute/voice-actions-engagement.png">
 </div>
 
-<div class="headerLine ">
-<h2>Deep Linking from Google Ads</h2>
-</div>
-<p>
-  Ads can remind users about the apps they already have.
-</p>
 
-<p>
-  As with deep links from Google's organic search results, AdWords deep links
-  send users directly to the relevant pages in apps they already have on their
-  mobile device. A mobile search for "flights to London," for instance, could
-  take a user straight to the London page in a travel app. <a href=
-  "http://www.thinkwithgoogle.com/products/ads-apps.html"
-  class="external-link">Learn more</a>.
-</p>
+<h2 id="assist_your_users">Google Now</h2>
 
-<div class="headerLine clearfloat">
-  <h2 id="related-resources">
-    Related Resources
-  </h2>
+<p>If you’re building travel, entertainment, or restaurant apps, Google Now cards
+can re-engage your users via structured data markup delivered in email notifications.</p>
+
+<div style="margin-top:1em">
+<img src="{@docRoot}images/distribute/google-now-engagement.png">
 </div>
 
-<div class="resource-widget resource-flow-layout col-13" data-query=
-"collection:distribute/engage/deeplinks" data-sortorder="-timestamp"
-data-cardsizes="9x3" data-maxresults="6">
-</div>
\ No newline at end of file
+<h2 id="tips">Tips</h2>
+
+<ul>
+  <li>For users who have viewed pages in your app, and later searches for similar content,
+  you can use the App Indexing API to have deep links appear in search suggestions.</li>
+  <li>App Indexing is flexible—you can direct search users to your app or website on a
+  page by page basis. Moving from search results to apps is seamless, without any pop-ups
+  or extra taps to slow users down.</li>
+</ul>
+
+<h2 style="clear:both" id="related-resources">Related Resources</h2>
+
+<div class="resource-widget resource-flow-layout col-13"
+  data-query="collection:distribute/engage/appindexing"
+  data-sortOrder="-timestamp"
+  data-cardSizes="6x2"
+  data-maxResults="3"></div>
+
+
diff --git a/docs/html/distribute/engage/easy-signin.jd b/docs/html/distribute/engage/easy-signin.jd
index d066181..924c5b4 100644
--- a/docs/html/distribute/engage/easy-signin.jd
+++ b/docs/html/distribute/engage/easy-signin.jd
@@ -1,105 +1,76 @@
-page.title=Make Signing In Easy
+page.title=Add Quick and Secure Google Sign-in
 page.metaDescription=Increase conversion rates while helping users minimize typing by letting users sign in with Google+.
-page.tags="google+"
-page.image=/images/google/gps-googleplus.png
-
+page.tags="google", "identity", "signin"
+page.image=images/cards/google-sign-in_2x.png
 
 @jd:body
 
-<div class="sidebox-wrapper" style="float:right;">
-  <div class="sidebox" style="width:360px;">
-    <p>
-      <strong>Tip:</strong> For game developers, Google+ signin is already
-      included as part of Google Play game services.
-    </p>
+<p>Get people into your apps quickly and securely, using a registration system they
+already use and trust – their Google account. With minimal effort, you can increase
+registration and sign-in conversion by adding trusted registration system that's
+familiar to users, consistent across devices, and quick and easy to use.</p>
+
+<p>Get started <a href="https://developers.google.com/identity/sign-in/">integrating
+Google sign-in into your apps and games</a>.</p>
+
+<div class="wrap">
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-3of12">
+      <h3>Quick and secure app access</h3>
+        <p>A secure authentication system that makes sign-in easy for your users by
+        letting them use their Google account, which they already use with Gmail,
+        Play, Google+, and other Google services.</p>
+    </div>
+    <div class="col-8of12 col-push-1of12">
+     <img src="{@docRoot}images/distribute/signin-secure.png" style="padding-top:1em;">
+    </div>
+  </div>
+
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-3of12">
+      <h3>Seamless experience across screens</h3>
+      <p>Keep your users engaged, no matter what device they pick up or sit down at.
+      Offer a seamless app experience across devices and into your website, securely
+      from a one-time consent. </p>
+    </div>
+    <div class="col-8of12  col-push-1of12">
+      <img src="{@docRoot}images/distribute/signin-seamless.png" style="padding-top:1em;">
+    </div>
+  </div>
+
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-3of12">
+      <h3>Help your users take action with Google</h3>
+        <p>Securely connect users with Google services and let them pay with Google
+        Wallet, share with Google contacts, save files to Drive, add events to
+        Calendar, and more.</p>
+    </div>
+    <div class="col-8of12 col-push-1of12">
+     <img src="{@docRoot}images/distribute/signin-apps.png" style="padding-top:1em;">
+    </div>
   </div>
 </div>
 
-<p>
-  Increase conversion rates while helping users minimize typing by letting
-  users sign in with Google+. The <a href=
-  "{@docRoot}google/play-services/plus.html">Google+ platform for Android</a>
-  authenticates users with their Google credentials safely and securely. With
-  your <a href="https://developers.google.com/+/mobile/android/sign-in">users
-  signing in with Google</a>, you can create more engaging experiences and
-  drive the use of your apps .
-</p>
 
-<div style="width:450px;">
-  <img src="{@docRoot}images/google/gps-googleplus.png" style="padding-top:1em;">
-</div>
-
-<p>
-  Use the Google+ social graph to welcome users by name, display their
-  pictures, connect them with friends and more. Users authenticate once and
-  then are signed-in automatically when they come back, eliminating the need to
-  remember and type names and passwords.
-</p>
-
-<div class="headerLine">
-  <h2>
-    And Spreading the Word a Snap
-  </h2>
-
-
-</div>
-
-
-<div class="figure" style="float:right;">
-  <img src="{@docRoot}images/gp-engage-share-plus.png" style=
-  "width:160px;padding-top:1em;">
-  <p class="img-caption">
-    Easy sharing through Google+
-  </p>
-</div>
-
-
-<p>
-  Using Google+ can help users spread the word about your apps to their
-  friends, attracting them to your apps, right from within your apps:
-</p>
-
-<p>
-  Google+ is also a great way to build a community of loyal fans that will help
-  you with <a href=
-  "https://support.google.com/googleplay/android-developer/answer/3131213">beta
-  testing</a>.
-</p>
+<h2>Tips</h2>
 
 <ul>
-  <li>Using a <a href=
-  "https://developers.google.com/+/mobile/android/recommend">native +1
-  button</a> to let users make a recommendation for your apps or their content.
-  </li>
-
-  <li>
-    <a href="https://developers.google.com/+/mobile/android/share/">Share rich
-    content</a> to the Google+ stream, including text, photos, URL attachments,
-    and location.
-  </li>
-
-  <li>Create <a href=
-  "https://developers.google.com/+/mobile/android/share/interactive-post">Interactive
-  posts</a> to share your website or apps, users can even invite friends to
-  "listen," "RSVP," "check-in," or one of over 100 actions.
-  </li>
+<li>Add <strong>over-the-air installs</strong> to your website. After signing in with Google
+  on the web, users will have the option to send your Android app to their device instantly,
+  without them ever leaving your website.</li>
+  <li>With Google sign-in, you can take advantage of other <strong>Google+ platform
+  features</strong> like adding a +1 button so users can make recommendations and the ability
+  to share rich content to the Google+ stream.</li>
 </ul>
 
-<p style="clear:both">
-</p>
-  <div class="headerLine">
-    <h2 id="related-resources">
-      Related Resources
-    </h2>
 
+<h2 style="clear:both" id="related-resources">Related Resources</h2>
 
-  </div>
-
-  <div class="resource-widget resource-flow-layout col-13"
+<div class="resource-widget resource-flow-layout col-13"
   data-query="collection:distribute/engage/gplus"
   data-sortorder="-timestamp"
   data-cardsizes="9x3"
-  data-maxresults="6">
-  </div>
+  data-maxresults="4">
 </div>
 
+
diff --git a/docs/html/distribute/engage/engage_toc.cs b/docs/html/distribute/engage/engage_toc.cs
index eb176f9..f8607f5 100644
--- a/docs/html/distribute/engage/engage_toc.cs
+++ b/docs/html/distribute/engage/engage_toc.cs
@@ -20,19 +20,25 @@
   <li class="nav-section">
     <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs
         var:toroot?>distribute/engage/easy-signin.html">
-        <span class="en">Make Signing In Easy</span></a>
+        <span class="en">Add Google Sign-in</span></a>
     </div>
   </li>
   <li class="nav-section">
     <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs
         var:toroot?>distribute/engage/deep-linking.html">
-        <span class="en">Deep Link to Bring Users Back</span></a>
+        <span class="en">Drive Usage with Search</span></a>
     </div>
   </li>
   <li class="nav-section">
     <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs
-        var:toroot?>distribute/engage/game-services.html">
-        <span class="en">Encourage Competition</span></a>
+        var:toroot?>distribute/engage/ads.html">
+        <span class="en">Drive engagement with Ads</span></a>
+    </div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs
+        var:toroot?>distribute/engage/intents.html">
+        <span class="en">Use the Power of Intents</span></a>
     </div>
   </li>
   <li class="nav-section">
@@ -43,6 +49,12 @@
   </li>
   <li class="nav-section">
     <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs
+        var:toroot?>distribute/engage/game-services.html">
+        <span class="en">Encourage Competition</span></a>
+    </div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs
         var:toroot?>distribute/engage/app-updates.html">
         <span class="en">Update Regularly</span></a>
     </div>
diff --git a/docs/html/distribute/engage/index.jd b/docs/html/distribute/engage/index.jd
index 2b103c3..165cc0e 100644
--- a/docs/html/distribute/engage/index.jd
+++ b/docs/html/distribute/engage/index.jd
@@ -1,5 +1,5 @@
 page.title=Engage & Retain Users
-page.metaDescription=Engaging and retaining active users is the key to success. Here are some resources to help you build an active user base.
+page.metaDescription=Engaging and retaining active users are the keys to success. Here are some resources to help you build an active user base.
 section.landing=true
 nonavpage=true
 
@@ -11,26 +11,21 @@
   techniques to keep your users coming back.
 </p>
 
-<div class="dynamic-grid">
-
   <div class="resource-widget resource-flow-layout landing col-16"
     data-query="collection:distribute/engagelanding"
-    data-cardSizes="9x6,9x6,6x6,6x6,6x6,9x6,9x6,6x6,6x6,6x6"
-    data-maxResults="10">
+    data-cardSizes="6x6"
+    data-maxResults="6">
+  </div>
+  <div class="resource-widget resource-flow-layout landing col-16"
+    data-query="collection:distribute/engagelanding"
+    data-cardSizes="6x3"
+    data-maxResults="20">
   </div>
 
-  <h3>Related Resources</h3>
+<!--  <h2>Related Resources</h2>
   <div class="resource-widget resource-flow-layout col-16"
-    data-query="type:youtube+tag:engagement"
-    data-sortOrder="-timestamp"
-    data-cardSizes="6x3"
+    data-query="tag:engagement"
+    data-sortOrder="random"
+    data-cardSizes="6x2"
     data-maxResults="3">
-  </div>
-  <div class="resource-widget resource-flow-layout col-16"
-    data-query="type:blog+tag:engagement"
-    data-sortdOrder="-timestamp"
-    data-cardSizes="6x3"
-    data-maxResults="3">
-  </div>
-
-</div>
\ No newline at end of file
+  </div> -->
diff --git a/docs/html/distribute/engage/intents.jd b/docs/html/distribute/engage/intents.jd
new file mode 100644
index 0000000..e8e49d9
--- /dev/null
+++ b/docs/html/distribute/engage/intents.jd
@@ -0,0 +1,39 @@
+page.title=Drive Discovery through Intents
+page.metaDescription=Make your app available to users as they perform tasks in other apps through Intents. 
+page.tags="engagement"
+@jd:body
+
+<p>Let the user choose <em>your app</em> to handle specific tasks from another app,
+such as sharing a picture, sending a message, or playing music. You can do this though
+Android's open Intents system. By adding Intent filters for the tasks your app can handle,
+you make it easy for the user to access your app’s features from other apps and from voice
+commands in Google Now.</p>
+
+<img src="{@docRoot}images/distribute/engage-intents.png">
+
+<p>By declaring Intent Filters in your app, it informs the Android OS about the
+actions it can perform for other apps. And in addition to making it easy for
+your users to make full use of your app’s features, it can help them discover
+features they didn’t know it supported.</p>
+
+<p>To learn about all the ways you can use Intents, check out <a
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters</a>.</p>
+
+<h2 id=tips>Tips</h2>
+
+<ul>
+  <li> Identify and package any features your app can offer to other apps.
+  <li> Use the "view" intent to give users the option to open any links to your
+website within your app instead.
+  <li> Familiarize yourself with actions commonly accomplished with intents, such as
+sharing, so that you can focus on your app's core functionality and outsource
+common actions.
+</ul>
+
+<h2 style="clear:both" id="related-resources">Related Resources</h2>
+
+<div class="resource-widget resource-flow-layout col-13"
+  data-query="collection:distribute/engage/intents"
+  data-sortOrder="-timestamp"
+  data-cardSizes="9x3"
+  data-maxResults="6"></div>
diff --git a/docs/html/distribute/essentials/best-practices/apps.jd b/docs/html/distribute/essentials/best-practices/apps.jd
deleted file mode 100644
index bbac727..0000000
--- a/docs/html/distribute/essentials/best-practices/apps.jd
+++ /dev/null
@@ -1,260 +0,0 @@
-page.title=App Developer Best Practices
-page.image=/distribute/images/gp-app-practices.png
-page.metaDescription=Essential tips for launching successful apps in Google Play.
-@jd:body
-
-<div id="qv-wrapper"><div id="qv">
-<h2>Best Practices</h2>
-<ol>
-<li><a href="#essentials">Get the Essentials Right</a></li>
-<li><a href="#users">Get Users</a></li>
-<li><a href="#engage">Engage and Retain</a></li>
-<li><a href="#beyond">Beyond the Basics</a></li>
-<li><a href="#related-resources">Related Resources</a></li>
-</ol>
-</div></div>
-
-<p>The following best practices have enabled developers worldwide to build great, successful apps for Google Play.</p>
-
-<div class="headerLine">
-<h2 id="essentials">Get the Essentials Right</h2>
-</div>
-
-<h3>1. Make it Android</h3>
-
-<ul>
-  <li>
-  <p>
-    Build your apps to make best use of the unique Android features, such as
-    <a href="{@docRoot}distribute/engage/widgets.html">widgets</a>, <a href=
-    "{@docRoot}distribute/engage/notifications.html">rich notifications</a>,
-    <a href=
-    "http://android-developers.blogspot.com/2012/02/share-with-intents.html">sharing
-    through Intents</a>, and more.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Add the power of Google features your users already love, such as
-    <a href="https://developers.google.com/maps/documentation/android/">Google
-    Maps</a>, <a href="https://developers.google.com/drive/">Google
-    Drive</a>, and more, all with <a href=
-    "https://developers.google.com/+/mobile/android/sign-in">single sign
-    on</a>.
-  </p>
-  </li>
-</ul>
-
-<h3>
-  2. Make it quality
-</h3>
-
-<ul>
-  <li>
-  <p>
-    Make sure your apps follow the <a href=
-    "{@docRoot}distribute/essentials/quality/core.html">Core App Quality</a>
-    guidelines.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Create apps that are available on all form factors and screen sizes, by
-    following the <a href=
-    "{@docRoot}distribute/essentials/quality/tablets.html">Tablet App
-    Quality</a> guidelines.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Test and <a href=
-    "{@docRoot}distribute/essentials/optimizing-your-app.html">optimize your
-    quality</a> at every step and make use of the Google Play <a href=
-    "{@docRoot}distribute/googleplay/developer-console.html#alpha-beta">beta-testing</a>
-    and <a href=
-    "{@docRoot}distribute/googleplay/developer-console.html#staged-rollouts">staged
-    rollouts</a> features to test with users before launch.
-  </p>
-  </li>
-</ul>
-
-<div class="headerLine">
-  <h2 id="users">
-  Get Users
-  </h2>
-
-
-</div>
-
-<h3>
-  1. Build buzz
-</h3>
-
-<ul>
-  <li>
-  <p>
-    Create a great <a href="{@docRoot}distribute/users/your-listing.html">app
-    listing page</a> to showcase your apps and grab users’ attention. Don’t
-    forget to include a <a href=
-    "{@docRoot}distribute/engage/video.html">YouTube video</a>.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    <a href="{@docRoot}distribute/tools/launch-checklist.html">Launch</a> on
-    multiple platforms simultaneously to maximize your reach.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Promote your apps with the official <a href=
-    "{@docRoot}distribute/tools/promote/badges.html">Google Play badge</a>
-    and <a href="{@docRoot}distribute/tools/promote/linking.html">link to
-    your products</a> on Google Play.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Build a community with social media, <a href=
-    "http://groups.google.com/">forums</a>, and <a href=
-    "http://plus.google.com">communities</a> to get and keep users talking.
-  </p>
-  </li>
-</ul>
-
-<h3>
-  2. Optimize for great ratings
-</h3>
-
-<ul>
-  <li>
-  <p>
-    Get to <a href="{@docRoot}distribute/users/know-your-user.html">know your
-    users</a>, listen to and <a href=
-    "{@docRoot}distribute/engage/app-updates.html">update your apps</a> from
-    their feedback.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Focus on your strength markets first, get these right before expanding.
-  </p>
-  </li>
-</ul>
-
-<div class="headerLine">
-  <h2 id="engage">
-  Engage and Retain
-  </h2>
-
-
-</div>
-
-<h3>
-  1. Keep users coming back
-</h3>
-
-<ul>
-  <li>
-  <p>
-    Use <a href="{@docRoot}google/play/billing/index.html">Google Play In-app
-    Billing</a> to offer subscriptions to extended features.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Hold competitions and offer promotions, then announce them through
-    <a href="{@docRoot}design/patterns/notifications.html">notifications</a>.
-  </p>
-  </li>
-</ul>
-
-<h3>
-  2. Earn users’ love
-</h3>
-
-<ul>
-  <li>
-  <p>
-    <a href=
-    "http://android-developers.blogspot.com/2013/05/all-google-play-developers-can-now.html">
-    Respond to reviews</a> and get valuable feedback from the community
-    you've built.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    <a href=
-    "http://android-developers.blogspot.com/2013/10/improved-app-insight-by-linking-google.html">
-    Measure</a> your campaigns to see what is driving users to install your
-    apps.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    <a href=
-    "{@docRoot}distribute/essentials/optimizing-your-app.html#measuring-analyzing-responding">
-    Analyze in-app use</a> to steer content updates and prolong the life of
-    your apps.
-  </p>
-  </li>
-</ul>
-
-<div class="headerLine">
-  <h2 id="beyond">
-  Beyond the Basics
-  </h2>
-
-
-</div>
-
-<ul>
-  <li>
-  <p>
-    After you’ve launched in your market of strength, <a href=
-    "{@docRoot}distribute/users/expand-to-new-markets.html">expand into other
-    markets</a> strategically and <a href=
-    "{@docRoot}distribute/tools/localization-checklist.html">localize</a>
-    your apps as you go.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Keep users engaged, and stay ahead of the competition, by continually
-    <a href=
-    "{@docRoot}distribute/essentials/optimizing-your-app.html">optimizing
-    your apps</a> to offer new and better features, or retire those that
-    users aren’t using.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Build educational apps: learn <a href=
-    "{@docRoot}distribute/googleplay/edu/start.html">how to make apps for
-    Google Play for Education</a>.
-  </p>
-  </li>
-</ul>
-
-<div class="headerLine">
-<h2 id="related-resources">Related Resources</h2>
-</div>
-
-<div class="resource-widget resource-flow-layout col-13"
-  data-query="collection:distribute/toolsreference/bestpractices/apps"
-  data-sortOrder="-timestamp"
-  data-cardSizes="9x3,9x3"
-  data-maxResults="6"></div>
-
diff --git a/docs/html/distribute/essentials/best-practices/games.jd b/docs/html/distribute/essentials/best-practices/games.jd
deleted file mode 100644
index c4ce66e..0000000
--- a/docs/html/distribute/essentials/best-practices/games.jd
+++ /dev/null
@@ -1,259 +0,0 @@
-page.title=Game Developer Best Practices
-page.image=/distribute/images/gp-games-practices.png
-page.metaDescription=Essential tips for launching successful games in Google Play.
-
-@jd:body
-
-<div id="qv-wrapper"><div id="qv">
-<h2>Best Practices</h2>
-<ol>
-<li><a href="#users">Get Users</a></li>
-<li><a href="#engage">Engage and Retain</a></li>
-<li><a href="#beyond">Beyond the Basics</a></li>
-<li><a href="#related-resources">Related Resources</a></li>
-</ol>
-</div></div>
-
-<p>
-  The following best practices have enabled developers worldwide to build
-  great, successful games for Google Play.
-</p>
-
-<div class="headerLine">
-  <h2 id="users">
-  Get Users
-  </h2>
-
-
-</div>
-
-<h3>
-  1. Optimize for great ratings
-</h3>
-
-<ul>
-  <li>
-  <p>
-    <a href=
-    "{@docRoot}distribute/googleplay/developer-console.html#alpha-beta">Beta
-    test</a> to ensure your games are ready and poised for great ratings.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Optimize graphics, frame rates, and responsiveness with the <a href=
-    "http://android-developers.blogspot.com/2013/09/using-hardware-scaler-for-performance.html">
-    Hardware Scaler</a> and <a href=
-    "{@docRoot}training/graphics/opengl/index.html">OpenGL ES</a>.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Be sure your APK is small, then provide game content through over-the-air
-    downloads.
-  </p>
-  </li>
-</ul>
-
-<h3>
-  2. Build buzz
-</h3>
-
-<ul>
-  <li>
-  <p>
-    Build a community with social media, <a href=
-    "{@docRoot}distribute/users/build-community.html">communities</a> to get
-    and keep users talking.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Promote your games with official <a href=
-    "{@docRoot}distribute/tools/promote/badges.html">Google Play badges</a>
-    and <a href="{@docRoot}distribute/tools/promote/linking.html">links to
-    your products</a> on Google Play.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    If you ship on multiple platforms, doing so at the same time can maximize
-    your marketing impact.
-  </p>
-  </li>
-</ul>
-
-<h3>
-  3. Get Visibility
-</h3>
-
-<ul>
-  <li>
-  <p>
-    First impressions count: <a href=
-    "{@docRoot}distribute/users/your-listing.html">highlight</a> the game's
-    best features in screenshots, videos, and description.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Integrate Google Play Game Services, so your game is displayed in the
-    <a href=
-    "https://play.google.com/store/apps/details?id=com.google.android.play.games">
-    Google Play Games App</a>.
-  </p>
-  </li>
-</ul>
-
-<div class="headerLine">
-  <h2 id="engage">
-  Engage and Retain
-  </h2>
-
-
-</div>
-
-<h3>
-  1. Keep users coming back
-</h3>
-
-<ul>
-  <li>
-  <p>
-    <a href=
-    "https://developers.google.com/games/services/common/concepts/achievements">
-    Achievements</a>, <a href=
-    "https://developers.google.com/games/services/common/concepts/leaderboards">
-    leaderboards</a>, <a href=
-    "https://developers.google.com/games/services/common/concepts/realtimeMultiplayer">
-    multiplayer</a>, and <a href=
-    "https://developers.google.com/games/services/common/concepts/cloudsave">cloud
-    save</a> help engage users and bring them back.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Hold tournaments and offer promotions, then announce them through
-    <a href="{@docRoot}design/patterns/notifications.html">notifications</a>.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Sign in users early, then automatically. Before their first sign-in, save
-    progress locally.
-  </p>
-  </li>
-</ul>
-
-<h3>
-  2. Give users a reason to invest their money
-</h3>
-
-<ul>
-  <li>
-  <p>
-    A majority of the top grossing games use in-app purchases. Use them to
-    unlock content and allow players to enhance their game play.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    <a href="{@docRoot}google/play/billing/index.html">Google Play In-app
-    Billing</a> makes purchasing easy with several forms of payment.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Provide content updates regularly to give users limited edition items to
-    win or purchase.
-  </p>
-  </li>
-</ul>
-
-<h3>
-  3. Earn players’ love
-</h3>
-
-<ul>
-  <li>
-  <p>
-    <a href=
-    "http://android-developers.blogspot.com/2013/10/improved-app-insight-by-linking-google.html">
-    Measure</a> your campaigns to see what’s driving quality users to install
-    your games.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    <a href=
-    "{@docRoot}distribute/essentials/optimizing-your-app.html#measuring-analyzing-responding">
-    Analyze in-game use</a> to steer content updates and prolong the life of your
-    games.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    <a href=
-    "http://android-developers.blogspot.com/2013/05/all-google-play-developers-can-now.html">
-    Respond to reviews</a> and get valuable feedback from the community
-    you’ve built.
-  </p>
-  </li>
-</ul>
-
-<div class="headerLine">
-  <h2 id="beyond">
-  Beyond the Basics
-  </h2>
-
-
-</div>
-
-<ul>
-  <li>
-  <p>
-    After you've launched in your market of strength, <a href=
-    "{@docRoot}distribute/users/expand-to-new-markets.html">expand into other
-    markets</a> strategically and <a href=
-    "{@docRoot}distribute/tools/localization-checklist.html">localize</a>
-    your apps as you go.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Provide content <a href=
-    "{@docRoot}distribute/engage/app-updates.html">updates on a regular
-    basis</a> to keep users engaged.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Building educational games? See the <a href=
-    "{@docRoot}distribute/essentials/gpfe-guidelines.html">Education
-    Guidelines</a>.
-  </p>
-  </li>
-</ul>
-
-<div class="headerLine">
-<h2 id="related-resources">Related Resources</h2>
-</div>
-
-<div class="resource-widget resource-flow-layout col-13"
-  data-query="collection:distribute/toolsreference/bestpractices/games"
-  data-sortOrder="-timestamp"
-  data-cardSizes="9x3,9x3"
-  data-maxResults="6"></div>
diff --git a/docs/html/distribute/essentials/essentials_toc.cs b/docs/html/distribute/essentials/essentials_toc.cs
index fe3fc87..baca18f 100644
--- a/docs/html/distribute/essentials/essentials_toc.cs
+++ b/docs/html/distribute/essentials/essentials_toc.cs
@@ -34,18 +34,7 @@
         </a>
     </div>
   </li>
-  <li class="nav-section">
-    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/essentials/best-practices/apps.html">
-          <span class="en">App Best Practices</span>
-        </a>
-    </div>
-  </li>
-  <li class="nav-section">
-    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/essentials/best-practices/games.html">
-          <span class="en">Game Best Practices</span>
-        </a>
-    </div>
-  </li>
+</ul>
 
 
 <script type="text/javascript">
diff --git a/docs/html/distribute/essentials/index.jd b/docs/html/distribute/essentials/index.jd
index ca5442a..d5c3397 100644
--- a/docs/html/distribute/essentials/index.jd
+++ b/docs/html/distribute/essentials/index.jd
@@ -12,23 +12,17 @@
   process of monitoring feedback and making improvement after launch.
 </p>
 
-<div class="dynamic-grid">
 <div class="resource-widget resource-flow-layout landing col-16"
   data-query="collection:distribute/essentials"
   data-cardSizes="6x6"
   data-maxResults="6">
 </div>
 
-<h3>Related resources</h3>
+<!-- <h2>Related resources</h2>
 
 <div class="resource-widget resource-flow-layout col-16"
-  data-query="type:blog+tag:quality"
-  data-cardSizes="6x3"
-  data-maxResults="3">
-</div>
-<div class="resource-widget resource-flow-layout col-16"
-  data-query="type:youtube+tag:appquality"
-  data-cardSizes="6x3"
-  data-maxResults="3">
-</div>
-</div>
\ No newline at end of file
+  data-query="tag:quality"
+  data-cardSizes="6x2"
+  data-maxResults="3"
+  data-sortOrder="random">
+</div> -->
diff --git a/docs/html/distribute/googleplay/about.jd b/docs/html/distribute/googleplay/about.jd
index c25a9cf..2652046 100644
--- a/docs/html/distribute/googleplay/about.jd
+++ b/docs/html/distribute/googleplay/about.jd
@@ -2,7 +2,7 @@
 meta.tags="visibility, growth, distributing"
 page.tags="play, apps, distributing, publishing"
 page.metaDescription=Billons of downloads a month and growing. Get your apps in front of users at Google's scale.
-page.image=/distribute/images/about-play.jpg
+page.image=images/cards/google-play_2x.png
 
 @jd:body
 
@@ -369,4 +369,4 @@
   data-sortOrder="-timestamp"
   data-cardSizes="9x3"
   data-maxResults="4"></div>
-    </div>
\ No newline at end of file
+    </div>
diff --git a/docs/html/distribute/googleplay/auto.jd b/docs/html/distribute/googleplay/auto.jd
index af24a54..1f5915b 100644
--- a/docs/html/distribute/googleplay/auto.jd
+++ b/docs/html/distribute/googleplay/auto.jd
@@ -1,4 +1,4 @@
-page.title=Distributing to Android Auto
+page.title=Distribute to Android Auto
 page.image=/design/auto/images/auto-overview.png
 meta.tags="auto", "publish", "quality"
 page.tags="auto", "publish", "googleplay"
diff --git a/docs/html/distribute/googleplay/cardboard.jd b/docs/html/distribute/googleplay/cardboard.jd
new file mode 100644
index 0000000..d5965d1
--- /dev/null
+++ b/docs/html/distribute/googleplay/cardboard.jd
@@ -0,0 +1,50 @@
+page.title=Build VR with Google Cardboard
+page.metaDescription=Build apps and games with VR, for a viewer anyone can buy.
+page.tags=vr, carboard, games
+@jd:body
+
+<p>
+  Virtual reality promises to transform the way players view games, taking them from a
+  flat world into the realm of 3D. In fact, any application that provides
+  a way to visually explore has the possibility to offer users more immersive experiences
+  with VR &mdash; like a virtual tour of a famous landmark or a way to visualise atoms in a
+  chemical compound.
+</p>
+
+<div>
+<img src="{@docRoot}images/distribute/cardboard.jpg" />
+</div>
+
+<p>
+  Google Cardboard and the Cardboard SDK provides you with a practical, accessible way to
+  start developing VR, and your users with a simple, fun, and natural way to experience your
+  VR apps and games.
+</p>
+
+<p>
+  Order or make your own <a href="https://www.google.com/get/cardboard/get-cardboard.html">
+  Viewer that works with Google Cardboard</a>. And then find out more about <a
+  href="https://developers.google.com/cardboard/">developing with the Cardboard SDK</a>.
+</p>
+
+<h2 id="tips">Tips</h2>
+<ul>
+  <li>Review our <a
+href="http://www.google.com/design/spec-vr/designing-for-google-cardboard/a-new-dimension.html">
+  best practices for designing Cardboard apps.</li>
+  <li>Check out our <a href="http://stackoverflow.com/questions/tagged/google-cardboard">Stack
+  Overflow tag</a> to find and ask questions about Cardboard development.</li>
+  <li>Join the <a href="https://plus.google.com/communities/111524380182206513071">Cardboard
+  &amp; VR Developers community</a> on Google+ to stay up-to-date on Cardboard and
+  connect with other developers.</li>
+</ul>
+
+<h2 style="clear:both" id="related-resources">Related Resources</h2>
+
+<div class="resource-widget resource-flow-layout col-13"
+  data-query="collection:distribute/googleplay/cardboard"
+  data-sortOrder="-timestamp"
+  data-cardSizes="9x3"
+  data-maxResults="6"></div>
+
+
diff --git a/docs/html/distribute/googleplay/cast.jd b/docs/html/distribute/googleplay/cast.jd
new file mode 100644
index 0000000..55bc1a9
--- /dev/null
+++ b/docs/html/distribute/googleplay/cast.jd
@@ -0,0 +1,48 @@
+page.title=Stream with Google Cast
+page.metaDescription=Let users stream your video and audio content to their TVs and speakers.
+page.tags=cast, video, chromecast
+@jd:body
+
+<p>
+  With Google Cast
+  you make it easy for users to include your content as part of their viewing
+  on TV and listening on audio systems. All they need is an Android TV, a TV with a Chromecast plugged in,
+  or a Cast for audio device connected to their audio system.
+</p>
+
+<div>
+<img src="{@docRoot}images/distribute/cast.jpg">
+</div>
+
+<p>
+  Google Cast is a great way to add value and convenience to your content
+  consumption apps, and extend their engagement with your users.
+</p>
+
+<p>
+  <a href="https://developers.google.com/cast/">Find out how to get your app Google
+  Cast-ready</a>. 
+</p>
+
+<h2 id="tips">Tips</h2>
+<ul>
+  <li>Cast devices can be low-power devices with memory, CPU, and GPU limitations,
+  so the receiver application should be as lightweight as possible.</li>
+  <li>User interaction should only take place on the Cast sender (phone, tablet,
+  or Chrome browser), not the Cast receiver.</li>
+  <li>While content is loading, provide animated loading indicators and use transitions
+  to help make things feel faster on the Cast sender interface.</li>
+  <li>Let users know your app is “Google Card-enabled” in your store listing and use
+  the <a href="https://developers.google.com/cast/docs/ux_guidelines#brand-guidelines">Google
+  Cast badge</a> on your website and marketing materials.</li>
+</ul>
+
+<h2 style="clear:both" id="related-resources">Related Resources</h2>
+
+<div class="resource-widget resource-flow-layout col-13"
+  data-query="collection:distribute/googleplay/cast"
+  data-sortOrder="-timestamp"
+  data-cardSizes="9x3"
+  data-maxResults="6"></div>
+
+
diff --git a/docs/html/distribute/googleplay/developer-console.jd b/docs/html/distribute/googleplay/developer-console.jd
index f5b3ac6..748c1d1 100644
--- a/docs/html/distribute/googleplay/developer-console.jd
+++ b/docs/html/distribute/googleplay/developer-console.jd
@@ -1,6 +1,6 @@
 page.title=Developer Console
 page.metaDescription=Learn about the Developer Console, your home for app publishing on Google Play.
-page.image=/distribute/images/developer-console.jpg
+page.image=images/cards/dev-console_2x.jpg
 Xnonavpage=true
 
 @jd:body
@@ -600,4 +600,4 @@
   data-sortOrder="-timestamp"
   data-cardSizes="9x3"
   data-maxResults="6"></div>
-  </div>
\ No newline at end of file
+  </div>
diff --git a/docs/html/distribute/googleplay/edu/about.jd b/docs/html/distribute/googleplay/edu/about.jd
index 469b899..36a67b26 100644
--- a/docs/html/distribute/googleplay/edu/about.jd
+++ b/docs/html/distribute/googleplay/edu/about.jd
@@ -33,18 +33,20 @@
       <img src="{@docRoot}images/gpfe-developer.png">
     </div>
 
-    <h3>
-      FOR DEVELOPERS
-    </h3>
-    <b>Get discovered</b>
-    <p>
-      With Google Play for Education, teachers and administrators can browse
+
+
+<div class="wrap">
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-6of12">
+      <h2 id="maximize_your_ad_revenue">For developers</h2>
+      <img src="{@docRoot}images/gpfe-developer.png">
+      <h5>Get discovered</h5>
+      <p>With Google Play for Education, teachers and administrators can browse
       content by curriculum, grade, and standard &mdash; discovering the right
       content for their students. If your app offers an exciting new way to
       learn sixth grade algebra, math educators will be able to find, purchase,
-      and distribute your app to their classes in a few clicks.
-    </p>
-    <b>Reach more schools and students</b>
+      and distribute your app to their classes in a few clicks.</p>
+      <h5>Reach more schools and students</h5>
     <p>
       Millions of students, faculty, and staff are using Google Apps for
       Education and other Google services. Many of these schools are excited to
@@ -52,55 +54,52 @@
       looking to bring your apps into their classrooms, especially apps using
       Google sign-on.
     </p>
-    <b>Monetize effectively</b>
+      <h5>Monetize effectively</h5>
     <p>
       With Google Play for Education, educators are able to make high-volume
       purchases using standard institutional payment mechanisms and then
       distribute apps to the students who need them — whether it’s a class of
       20 or a district of 20,000.
     </p>
-  </div>
-
-  <div style="width:48%; margin-left:2%; float:left;">
-    <div class="centered-full-image">
-      <img src="{@docRoot}images/gpfe-educator.png">
     </div>
 
-    <h3>
-      FOR EDUCATORS
-    </h3>
-    <b>Android tablets in the classroom</b>
+
+    <div class="col-6of12">
+      <h2 id="maximize_your_ad_revenue">For educators</h2>
+      <img src="{@docRoot}images/gpfe-educator.png">
+      <h5>    <b>Android tablets in the classroom</h5>
     <p>
       Google Play for Education brings the innovation of Android technology
       into classrooms. School districts can set up and deploy large numbers of
       devices in just minutes or hours, rather than days.
     </p>
-    <b>Curriculum-based discovery</b>
+      <h5>Curriculum-based discovery</h5>
     <p>
       Powerful browsing tools let educators quickly discover apps, videos, and
       other content—with many recommended by teachers and categorized according
       to familiar Core Curriculum standards.
     </p>
-    <b>Bulk purchase with institutional payment</b>
+      <h5>Bulk purchase with institutional payment</h5>
     <p>
       Convenient purchasing and delivery tools let educators buy apps in bulk,
       using purchase orders and other payment methods that are easy for schools
       to manage.
     </p>
-    <b>Over-the-air delivery to student devices</b>
+      <h5>Over-the-air delivery to student devices</h5>
     <p>
       After finding apps they want, educators can push them instantly to
       student devices over the air. They can send the apps to individuals or
       groups of any size, across classrooms, schools, or even districts.
     </p>
+      <h5>Business-wide licensing</h5>
+      <p>Paid apps are licensed to your organization, enabling you to move paid apps between users as users needs change and staff turns over. </p>
+    </div>
   </div>
 </div>
 
-<p style="clear:both">
-</p>
-<div class="headerLine">
+
 <h2 id="related-resources">Related Resources</h2>
-</div>
+
 
 <div class="dynamic-grid">
 
diff --git a/docs/html/distribute/googleplay/families/about.jd b/docs/html/distribute/googleplay/families/about.jd
index c542e0f..5a15490 100644
--- a/docs/html/distribute/googleplay/families/about.jd
+++ b/docs/html/distribute/googleplay/families/about.jd
@@ -7,15 +7,12 @@
 @jd:body
 
 <p>
-  In several weeks, a new family-focused experience on Google Play will give
-  users new ways to browse, search, and discover high quality apps and games
-  for their families.
+  If you got great apps targeting kids and/or families, the family-focused experience
+  on Google Play is a great way to make them discoverable by parents.
 </p>
 
-<p>
-  To support a more family-friendly store, developers are invited to opt-in
-  family-focused apps and games to the new Designed for Families program. Apps
-  that meet the <a href=
+<p>Developers are invited to opt-in these apps and games to the new Designed for
+  Families program. Apps that meet the <a href=
   "https://support.google.com/googleplay/android-developer/answer/6184502">program
   requirements</a> will be shown in the new family experience so that
   parents can find suitable, trusted, high-quality apps and games more easily.
@@ -31,11 +28,62 @@
   store.
 </p>
 
+<h2 id="benefits">Benefits</h2>
+
+<p>
+  By opting-in to Designed for Families, parents can easily find your family-friendly
+  content on the Google Play store however they are accessing it.
+</p>
+
+<h3>Search</h3> 
+
+<p>
+  Only content opted-in to the Designed for Families program will show up in search results
+  from any of the family sections. This is a huge boost to this content as a majority of
+  searches on the Play Store containing the terms “apps for” or “games for” are related to
+  kids.
+</p>
+
+<h3>Browse</h3>
+
+<p>
+  Family sections within Apps, Games, Movies & TV and Music provide enhanced discovery for
+  parents. These sections act as true home pages and contain unique categories tailored to kids
+  content, specific age-based categories, and merchandised content.
+</p>
+
+<h3>Character pages</h3>
+
+<p>
+  All content for particular popular characters can now be found in one place on character pages,
+  including apps, games, movies, tv, and books. It’s a powerful way to promote children’s brands
+  across content, and allows you to reach a highly relevant and targeted audience. Character
+  pages are also a way to alleviate concerns around IP protection, since only properly licensed
+  content is on these pages. 
+</p>
+
+<h3>Merchandising</h3>
+
+<p>
+  The family sections have their own merchandised content, with new opportunities for featuring
+  on the home pages of the family sections and and within the age-specific home pages. The pages
+  are curated to ensure quality and limited to only content opted-in to Designed for Families
+  and appropriate for specific age ranges.
+</p>
+
+<h3>Badging</h3>
+
+<p>
+  Apps opted-in to Designed for Families will receive family-friendly badges, which are a marker
+  of quality and signal to parents that apps are suitable for users of specific ages groups.
+  Clicking on a badge also leads you to other apps and games with that badge. 
+</p>
+
 <h2 id="elibibility">Eligibility</h2>
 
 <p>
-  Apps in the family-friendly experience on Google Play will be more
-  discoverable by parents and families, who expect the apps to be age
+  Apps in the family-friendly experience on Google Play are more
+  discoverable by parents and families, who expect the apps to appeal to kids under 13 and be age
   appropriate. The Designed for Families program is designed to be inclusive of
   apps that are made for kids as well as those that can be enjoyed by the
   entire family. To address this audience, there are specific guidelines and
diff --git a/docs/html/distribute/googleplay/families/faq.jd b/docs/html/distribute/googleplay/families/faq.jd
index c6fbf86..363dc91 100644
--- a/docs/html/distribute/googleplay/families/faq.jd
+++ b/docs/html/distribute/googleplay/families/faq.jd
@@ -1,4 +1,4 @@
-page.title=Frequently Asked Questions
+page.title=Google Play for Families FAQ
 meta.tags="families", "guidelines", "quality"
 page.tags="families", "addendum"
 page.metaDescription=Questions and answers about Designed for Families
@@ -78,14 +78,44 @@
   </dd>
 
   <dt>
+    If I distribute my apps globally, do I need to provide a translated version
+    of my privacy policy for each separate language APK?
+  </dt>
+  <dd>
+    No, you do not need to translate your privacy policy. However, if you
+    distribute your apps in a few select countries, it is advised that you do
+    translate your privacy policy. 
+  </dd>
+
+  <dt>
+    How do I decide what age group to select?
+  </dt>
+
+  <dd>
+    Age groups are: Ages 5 & Under, Ages 6-8, and Ages 9-12. If you select one of these
+    age groups, your content must be appropriate for children in the age ranges. You may
+    select the General Audience category only select if your app targets both children
+    under 13 and adults.
+  </dd>
+
+  <dt>
+    What will be different about my app if I select the General Audience category?
+  </dt>
+
+  <dd>
+    There is not a dedicated section for General Audience apps within the family sections.
+    In addition,  you can use Google+ Sign-in or Google Play Game Services as an optional
+    feature, but child users must be able to access the app or game in its entirety
+    without signing into Google+ or Google Play Games Service.
+  </dd>
+
+  <dt>
     How many age groups can I select?
   </dt>
 
   <dd>
-    You can select up to two adjacent age groups. Age groups are: Ages 5 &
-    Under, Ages 6-8, and Ages 9-12. However, if your app targets audiences
-    comprised of children and older audiences, you must select the <em>General
-    Audience</em> category.
+    You can select up to two adjacent age groups only if your app is appropriate for
+    multiple age groups.
   </dd>
 
   <dt>
@@ -238,12 +268,12 @@
 
 <dl>
   <dt>
-    Can you give me more details on the advertising policies for Designed for
+    Are ads allowed? Can you give me more details on the advertising policies for Designed for
     Families?
   </dt>
 
   <dd>
-    Read the <a href=
+    Yes, ads are allowed as long as the adhere to the <a href=
     "https://support.google.com/googleplay/android-developer/answer/6184502#ads">
     ads policy for Designed for Families</a>.
   </dd>
@@ -258,6 +288,23 @@
   </dd>
 
   <dt>
+    What about full page ads?
+  </dt>
+
+  <dd>
+    You may use full page ads as long as the ad can be dismissed without the user having to
+    interact with it in other ways.
+
+  <dt>
+    Am I allowed to use house/first party ads and product placements within my app?
+  </dt>
+
+  <dd>
+    House ads are allowed, but they must comply with <a
+    href="https://support.google.com/googleplay/android-developer/answer/6184502#ads">ads policies</a>. 
+  </dd>
+
+  <dt>
     How do I know that my ad network complies with the advertising
     policies for Designed for Families?
   </dt>
@@ -328,6 +375,17 @@
     a different category in the Play store. Apps that have not selected another
     category will be assigned to the Casual Games category.
   </dd>
+
+  <dt>
+    How can users find character pages?
+  </dt>
+
+  <dd>
+    Character pages are found through the “Popular Characters” tab within each of
+    the verticals. They can also be accessed from character-specific badges on details
+    pages of character content.
+  </dd>
+
 </dl>
 
 <div class="paging-links" style="padding-top:.75em;">
diff --git a/docs/html/distribute/googleplay/families/start.jd b/docs/html/distribute/googleplay/families/start.jd
index af4eb3a..0e773bd 100644
--- a/docs/html/distribute/googleplay/families/start.jd
+++ b/docs/html/distribute/googleplay/families/start.jd
@@ -30,7 +30,7 @@
   Now that your app is ready to publish, you can opt-in to Designed for
   Families directly from the <a href=
   "https://play.google.com/apps/publish/">Developer Console</a>. Opt-in means
-  that you want your app to be made available on the new family-friendly
+  that you want your app to be made available on the family-friendly
   experience on Google Play in addition to the category you’ve selected on
   the Google Play Store.
 </p>
@@ -64,9 +64,10 @@
   style="border:2px solid #ddd;margin:1em 0;"></li>
   <li>Choose your target age groups from: Ages 5 & Under, Ages 6 to 8, Ages 9
   to 12, or General Audience (for apps which target children and older
-  audiences). If your app targets more than one age group, you can choose up to
-  two adjacent age groups. Apps with an ESRB 10+ rating can only choose an
-  age target of 9-12 or General Audience.
+  audiences). You can choose up to two adjacent age groups only if your app
+  targets more than one age group. Apps with an ESRB 10+ rating can only choose an
+  age target of 9-12 or General Audience. <!--Apps that are found to be inappropriate
+  for the age groups selected will -->
   </li>
 
   <li>Choose a category for your app for the new family-focused experience on
@@ -99,7 +100,7 @@
 <p>
   If you opt-in an app that's already published on Google Play and it doesn't
   meet the program requirements, it will remain available to all users but won't
-  be added to the new family experience until you update the app to meet the
+  be added to the family experience until you update the app to meet the
   program requirements.
 </p>
 
diff --git a/docs/html/distribute/googleplay/googleplay_toc.cs b/docs/html/distribute/googleplay/googleplay_toc.cs
index 78a3731..e348ee2 100644
--- a/docs/html/distribute/googleplay/googleplay_toc.cs
+++ b/docs/html/distribute/googleplay/googleplay_toc.cs
@@ -7,7 +7,7 @@
   </li>
   <li class="nav-section">
     <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/googleplay/start.html">
-            <span class="en">Get Started with Publishing</span>
+            <span class="en">Get Started <br />with Publishing</span>
           </a>
     </div>
   </li>
@@ -19,25 +19,37 @@
   </li>
   <li class="nav-section">
     <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/googleplay/guide.html">
-          <span class="en">Finding Success on Google Play</span>
+    <span class="en">Find Success on <span style="white-space:nowrap">Google Play</span></span>
         </a>
     </div>
   </li>
   <li class="nav-section">
     <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/googleplay/wear.html">
-          <span class="en">Distributing to <span style="white-space:nowrap">Android Wear</span></span>
+    <span class="en">Distribute to <br /><span style="white-space:nowrap">Android Wear</span></span>
         </a>
     </div>
   </li>
   <li class="nav-section">
     <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/googleplay/tv.html">
-          <span class="en">Distributing to <span style="white-space:nowrap">Android TV</span></span>
+          <span class="en">Distribute to <br /><span style="white-space:nowrap">Android TV</span></span>
         </a>
     </div>
   </li>
   <li class="nav-section">
     <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/googleplay/auto.html">
-          <span class="en">Distributing to <span style="white-space:nowrap">Android Auto</span></span>
+          <span class="en">Distribute to <br /><span style="white-space:nowrap">Android Auto</span></span>
+        </a>
+    </div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/googleplay/cast.html">
+          <span class="en">Stream Your Content <span style="white-space:nowrap">with Cast</span></span>
+        </a>
+    </div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/googleplay/cardboard.html">
+          <span class="en"><span style="white-space:nowrap">Build VR with Google Cardboard</span></span>
         </a>
     </div>
   </li>
@@ -72,6 +84,12 @@
         </a></li>
     </ul>
   </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/googleplay/work/about.html">
+          <span class="en"><span style="white-space:nowrap">Google Play for Work</span></span>
+        </a>
+    </div>
+  </li>
 </ul>
 <script type="text/javascript">
 <!--
diff --git a/docs/html/distribute/googleplay/index.jd b/docs/html/distribute/googleplay/index.jd
index b25f6b75..1908e01 100644
--- a/docs/html/distribute/googleplay/index.jd
+++ b/docs/html/distribute/googleplay/index.jd
@@ -1,4 +1,5 @@
 page.title=Google Play
+page.image=images/cards/program-edu_2x.jpg
 section.landing=true
 nonavpage=true
 
@@ -10,9 +11,7 @@
   help you gain traction in the marketplace.</span>
 </p>
 
-<div class="dynamic-grid">
-
-  <h3>Overview</h3>
+  <h2>Overview</h2>
 
   <div class="resource-widget resource-flow-layout landing col-16"
     data-query="collection:distribute/gp/gplanding"
@@ -21,25 +20,20 @@
     data-maxResults="3">
   </div>
 
-  <h3>Distribute Your Apps</h3>
+  <h2>Distribute Your Apps</h2>
 
   <div class="resource-widget resource-flow-layout landing col-16"
     data-query="collection:distribute/gp/gpfelanding"
     data-cardSizes="6x6"
-    data-maxResults="5">
+    data-maxResults="10">
   </div>
 
-  <h3>Related resources</h3>
+<!--  <h2>Related resources</h2>
 
   <div class="resource-widget resource-flow-layout col-16"
-    data-query="type:youtube+tag:growth"
-    data-cardSizes="6x3"
-    data-maxResults="3">
-  </div>
-  <div class="resource-widget resource-flow-layout col-16"
-    data-query="type:blog+tag:googleplay"
-    data-cardSizes="6x3"
-    data-maxResults="3">
-  </div>
+    data-query="tag:growth"
+    data-cardSizes="6x2"
+    data-maxResults="3"
+    data-sortOrder="random">
+  </div> -->
 
-</div>
diff --git a/docs/html/distribute/googleplay/tv.jd b/docs/html/distribute/googleplay/tv.jd
index 37cbe26..a35edbc 100644
--- a/docs/html/distribute/googleplay/tv.jd
+++ b/docs/html/distribute/googleplay/tv.jd
@@ -1,4 +1,4 @@
-page.title=Distributing to Android TV
+page.title=Distribute to Android TV
 page.image=/design/tv/images/atv-home.jpg
 meta.tags="tv", "publish", "quality"
 page.tags="tv", "publish", "googleplay"
diff --git a/docs/html/distribute/googleplay/wear.jd b/docs/html/distribute/googleplay/wear.jd
index c0a0017..7661016 100644
--- a/docs/html/distribute/googleplay/wear.jd
+++ b/docs/html/distribute/googleplay/wear.jd
@@ -1,4 +1,4 @@
-page.title=Distributing to Android Wear
+page.title=Distribute to Android Wear
 page.image=/design/media/wear/ContextualExample.008_2x.png
 meta.tags="wear", "publish", "quality"
 page.tags="wear", "publish", "googleplay"
diff --git a/docs/html/distribute/googleplay/work/about.jd b/docs/html/distribute/googleplay/work/about.jd
new file mode 100644
index 0000000..6ced561
--- /dev/null
+++ b/docs/html/distribute/googleplay/work/about.jd
@@ -0,0 +1,95 @@
+page.title=Google Play for Work
+page.metaDescription=Distribute your apps directly to enterprises and business users.
+page.tags="enterprise", "emm", "business", "administrator"
+page.image=images/distribute/android-work.jpg
+@jd:body
+
+<p>Google Play for Work is an extension of Google Play that lets Android for Work users browse and install apps. IT admins in a business using Android for Work choose which public and private apps are made available to users in their business. Businesses can use Google Play for Work to securely bulk deploy free apps to their employees or bulk purchase paid apps depending on their needs.</p>
+
+<p>As a Google Play developer, your free apps are automatically ready to be selected by Android for Work customers and made available to their workforces on Google Play for Work. However, to allow businesses access to bulk purchase your paid apps, you must opt-in and agree to the <a href="https://play.google.com/about/work/developer-distribution-agreement-addendum.html">Google Play for Work Addendum</a> to the Developer Distribution Agreement.</p>
+
+<p>Find out more about <a href="">distributing to Google Play for Work</a>.</p>
+
+<div class="wrap">
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-6of12">
+      <h2 id="maximize_your_ad_revenue">For developers</h2>
+      <img src="{@docRoot}images/distribute/gpfw_developer.png">
+      <h5>Get discovered</h5>
+      <p>Get your business related apps listed in a business specific gateway so they stand out from consumer apps.</p>
+      <h5>Get volume</h5>
+      <p>Reach new audiences at scale because businesses will be able to deploy your free apps in bulk. Bulk purchasing also allows businesses to buy your paid app at scale.</p>
+      <h5>Generate revenue from extended support</h5>
+      <p>Businesses will often look for extended support for business critical apps, and you have the opportunity to offer that support for a fee.</p>
+      <h5>Continue to offer in app-purchases</h5>
+      <p>You can continue to offer free apps with in-app purchases. Business employees will be able to make purchases just as they would if they personally installed your app. </p>
+    </div>
+
+
+    <div class="col-6of12">
+      <h2 id="maximize_your_ad_revenue">For businesses</h2>
+      <img src="{@docRoot}images/distribute/gpfw_business.png">
+      <h5>Free to businesses</h5>
+      <p>Google Play for Work is available free of charge to Android for Work customers.</p>
+      <h5>Full IT approval for apps</h5>
+      <p>IT can now approve and manage every app deployed to its organization’s workers.</p>
+      <h5>Secure app distribution</h5>
+      <p>Provides a secure gateway for distributing apps within your company, whether they are available publicly or distributed privately to employees at your organization.</p>
+      <h5>Work app configuration</h5>
+      <p>Maintain app settings, such as server addresses and default user settings, from your admin console for enabled apps.</p>
+      <h5>Business-wide licensing</h5>
+      <p>Paid apps are licensed to your organization, enabling you to move paid apps between users as users needs change and staff turns over. </p>
+    </div>
+  </div>
+</div>
+
+<h2 id="best_practices">Best practices for success</h2>
+
+<p>Keep these best practices in mind as you build a great enterprise-ready app.</p>
+
+<h3 id="design">Build a great app for business</h3>
+
+<ul>
+  <li>Follow best practices for security and manage user data properly. Businesses
+  are more conscious of data security and employee productivity, especially when it
+  comes to features that share information with other services.</li>
+  <li>Support the Work App Configuration framework to let an administrator remotely configure app settings such as:
+    <ul>
+      <li>Server address and protocol settings</li>
+      <li>The ability to switch features on and off</li>
+      <li>Sign-in credentials for your app's backend servers</li>
+      <li>Default user settings</li>
+    </ul>
+  </li>
+  <li>Request the minimum permissions that your app needs.</li>
+  <li>Make sure communication to your backend and data in your backend is secure.</li>
+  <li>Implement authorization policies that will minimize the number of your employees that can access user data.</li>
+  <li><a href={@docRoot}training/enterprise/app-compatibility.html">Offer compatibility with managed profile</a> and test that with the <a href="{@docRoot}samples/BasicManagedProfile/index.html">BasicManagedProfile sample app</a>.</li>
+  <li>Support <a href="{@docRoot}training/enterprise/app-restrictions.html">app restrictions</a> so that IT admins can remotely configure your app through leading EMM solutions.</li>
+</ul>
+
+<!--<h3 id="distribute">Distribute</h3>
+
+<p>Free to install apps are automatically made available through Google Play for Work, but for paid apps:</p>
+
+<ul>
+<li>When you <a href="https://support.google.com/googleplay/android-developer/answer/113469">publish your app through the Developer Console</a>, opt in to distribute through Google Play for Work, so you agree to your app’s licenses being transferrable within a single business customer.</li>
+<li>Use the <a href="{@docRoot}}google/play/licensing/index.html">Licensing API to track which users have licenses assigned.</li>
+</ul> -->
+
+
+<h3 id="support">Provide support and maintenance</h3>
+
+<ul>
+<li>Consider offering enhanced support to cover extended hours or specific means of contact. Businesses are often willing to pay for this service.</li>
+<li>If you update the App Configuration / App Restrictions schema for your app, make sure it remains backward compatible. This is because it’s possible that different users will have different versions of your app (at least temporarily), and IT admin will want a consistent remote configuration experience between versions to ensure efficient management of apps in the field.</li>
+</ul>
+
+<h2 id=related_resources>Related resources</h2>
+
+<div class="resource-widget resource-flow-layout col-13"
+  data-query="collection:distribute/googleplay/gpfw"
+  data-sortOrder="-timestamp"
+  data-cardSizes="9x3"
+  data-maxResults="6"></div>
+
diff --git a/docs/html/distribute/images/advertising.jpg b/docs/html/distribute/images/advertising.jpg
index 9625671..7747097 100644
--- a/docs/html/distribute/images/advertising.jpg
+++ b/docs/html/distribute/images/advertising.jpg
Binary files differ
diff --git a/docs/html/distribute/index.jd b/docs/html/distribute/index.jd
index d0ea661..d3f3836 100644
--- a/docs/html/distribute/index.jd
+++ b/docs/html/distribute/index.jd
@@ -1,3 +1,4 @@
+fullpage=true
 page.title=Distribute Your Apps
 page.viewport_width=970
 section.landing=true
@@ -6,21 +7,84 @@
 page.metaDescription=The most visited store in the world for Android apps. Cloud-connected and always synced, it's never been easier for users to find and download your apps.
 
 @jd:body
+<div class="dac-hero-carousel" data-carousel-query="collection:distribute/landing/carousel">
+</div>
 
-    <div class="resource-widget resource-carousel-layout col-16" 
-    style="height:420px;margin-top:20px;padding-top:0"
-    data-query="type:youtube+tag:googleplay+tag:developerstory+tag:featured"
-    data-sortOdrder="-timestamp"
-    data-maxResults="4"></div>
+<div class="wrap dac-offset-parent">
+  <a class="dac-fab dac-scroll-button" data-scroll-button href="#latest">
+    <i class="dac-sprite dac-arrow-down-gray"></i>
+  </a>
+</div>
 
+<section class="dac-section dac-gray dac-small dac-invert" id="latest"><div class="wrap">
+  <h2 class="norule">Latest</h2>
   <div class="resource-widget resource-flow-layout col-16"
-    data-query="type:blog+tag:googleplay+tag:distribute+tag:featured"
-    data-sortOrder=""
-    data-cardSizes="9x6"
-    data-maxResults="2"></div>
+      data-query="type:youtube+tag:googleplay+tag:developerstory+tag:featured, type:blog+tag:googleplay+tag:distribute+tag:featured"
+      data-sortOrder="-timestamp"
+      data-cardSizes="6x6"
+      data-maxResults="3"></div>
+</div></section>
 
+<section class="dac-section dac-invert dac-darken-bg" style="background-image: url(/images/distribute/google-play-bg.jpg)"><div class="wrap">
+  <div class="cols"><div class="col-10of12 col-push-1of12">
+    <h1 class="dac-section-title">Reach the world with Google Play</h1>
+    <div class="dac-section-subtitle">
+      Publish your apps and games on Google Play and reach over a billion active Android users in over 190 countries around the world.
+    </div>
+  </div></div>
   <div class="resource-widget resource-flow-layout col-16"
-    data-query="collection:launch/static"
-    data-sortOrder=""
-    data-cardSizes="6x2x3,6x6,6x6,6x6,6x6,6x2x3,6x2x3,6x6,6x6,6x6,6x6,6x6"
-    data-maxResults="24"></div>
+       data-query="collection:distribute/landing/googleplay"
+       data-cardSizes="6x6"
+       data-maxResults="3"></div>
+
+  <ul class="dac-section-links">
+    <li class="dac-section-link"><a href="/distribute/googleplay/start.html">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Get started
+    </a></li>
+    <li class="dac-section-link"><a href="/distribute/essentials/index.html#quality-guidelines">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Quality guidelines
+    </a></li>
+    <li class="dac-section-link"><a href="/distribute/essentials/index.html#tools-and-resources">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Resources &amp; tools
+    </a></li>
+    <li class="dac-section-link"><a href="/distribute/stories/index.html">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Developer stories
+    </a></li>
+    <li class="dac-section-link"><a href="/distribute/users/index.html">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Get users
+    </a></li>
+    <li class="dac-section-link"><a href="/distribute/engage/index.html">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Engage &amp; retain
+    </a></li>
+    <li class="dac-section-link"><a href="/distribute/monetize/index.html">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Earn
+    </a></li>
+    <li class="dac-section-link"><a href="/distribute/analyze/index.html">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Analyze
+    </a></li>
+  </ul>
+</div></section>
+
+<section class="dac-section dac-light"><div class="wrap">
+  <div class="cols"><div class="col-10of12 col-push-1of12">
+    <h1 class="dac-section-title">More from Google</h1>
+    <div class="dac-section-subtitle">Reach and retain a valuable audience and grow your revenue.</div>
+  </div></div>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:distribute/landing/more"
+       data-cardSizes="6x6"></div>
+<!--  <ul class="dac-section-links">
+    <li class="dac-section-link"><a href="https://developers.google.com/">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      More Google services for Android
+    </a></li>
+  </ul> -->
+</div></section>
diff --git a/docs/html/distribute/monetize/ads.jd b/docs/html/distribute/monetize/ads.jd
index 9a847ff..c15f2bb 100644
--- a/docs/html/distribute/monetize/ads.jd
+++ b/docs/html/distribute/monetize/ads.jd
@@ -1,138 +1,128 @@
-page.title=Monetize with Ads
-page.metaDescription=Ads are a quick and easy way to incorporate a monetization option into both your free and paid apps.
-page.tags="monetizing", "free", "freemium", "ads"
-page.image=/distribute/images/advertising.png
-
+page.title=Earn Revenue from AdMob Ads
+page.metaDescription=Gain insights about your users, drive more in-app purchases, and maximize your ad revenue.
+page.tags="monetizing", "ads", "admob", "ads"
+page.image=distribute/images/advertising.jpg
 @jd:body
 
 <div class="figure">
   <img src="{@docRoot}distribute/images/advertising.jpg" style="width:460px;">
 </div>
 
-<p>
-  Ads can be a quick and easy way to earn more from your <a href=
-  "{@docRoot}distribute/monetize/freemium.html">freemium</a>, <a href=
-  "{@docRoot}distribute/monetize/premium.html">premium</a>, and <a href=
-  "{@docRoot}distribute/monetize/subscriptions.html">subscription</a> apps.
-  AdMob and the Google Mobile Ads SDK let you add advertising to your apps with
-  just a few lines of code.
-</p>
+<p>Ads are an effective and easy way to earn revenue from your apps. AdMob brings
+together best-in-class technology in a single ad platform for your app, so you
+can gain insights about your users, drive more in-app purchases, and maximize
+your ad revenue. You won’t need to rely on a combination of tools or use
+precious development resources to build your own solution.</p>
 
-<p>
-  The question is: which model gets the best results for your app? Google's ad
-  tools are made to help you figure out what combination works best for both
-  your audience and your bottom line. </p>
-
-<p>Start by linking your AdMob and Google
-  Analytics accounts to get better insights and more earning power: for
-  instance, AdMob can promote in-app purchases to the people who buy them most
-  often, while showing income-generating ads to those less likely to buy right
-  now.
-</p>
-
-<p>
-  Using <a href=
-  "http://www.google.com/ads/admob/monetize.html#subid=us-en-et-dac">AdMob</a>
-  and the <a href="{@docRoot}google/play-services/ads.html">Google Mobile Ads
-  SDK</a> included in Google Play Services, you’re able to add advertising into
-  your apps, with just a few lines of code.
-</p>
-
-<p>
-  When including ads in your apps you should consider:
-</p>
+<p>Why choose AdMob?</p>
 
 <ul>
-  <li>
-    <p>
-      <strong>Placement within your apps</strong> &mdash; Well-placed ads make
-      it more likely that users will click through and convert. Poorly-placed
-      ads lead to lower click-through rates, and even poor ratings and users
-      abandoning your apps. Our <a href=
-      "{@docRoot}training/monetization/ads-and-ux.html">developer training</a>
-      on using ads shows some of the best ways to place ads.
-    </p>
-  </li>
-
-  <li>
-    <p>
-      <strong>Ad formats</strong> &mdash; Every app offers a different type of
-      experience for users, so it’s important that your ad formats match that
-      experience. While banner ads may work well for a flashlight utility app,
-      an immersive gaming app may benefit more from a video interstitial.
-      Mismatched ad formats can make users unhappy and leave money on the
-      table.
-    </p>
-  </li>
-
-  <li>
-    <p>
-      <strong>Maximizing your performance</strong> &mdash; Make sure you’re
-      optimizing your advertising revenue by maximizing your CPMs and fill
-      rate. Ad providers often cite their very high CPMs but don't mention low
-      fill rates that can severely decrease your effective CPM. Be sure to look
-      at both of these figures. Consider using a <a href=
-      "https://support.google.com/admob/v2/answer/3063564?hl=en&amp;ref_topic=3063091#subid=us-en-et-dac">
-      mediation</a> solution if you’d like to use multiple ad providers in your
-      apps. Look for solutions that offer yield management or <a href=
-      "https://support.google.com/admob/v2/answer/3379794?hl=en&amp;ref_topic=3379793#subid=us-en-et-dac">
-      network optimization</a> features to serve the highest paying ad for each
-      impression.
-    </p>
-  </li>
-
-  <li>
-    <p>
-      <strong>Exercising control options</strong> &mdash; A variety of ads may
-      show up within your app. It may make sense to <a href=
-      "https://support.google.com/admob/v2/answer/3150235?hl=enl#subid=us-en-et-dac">
-      block</a> certain of those advertisements from appearing, depending on
-      your goals and the type of experience you want to provide. Some
-      developers, for instance, don’t want ads for apps in their same category
-      showing to their users, while others don’t mind at all.
-    </p>
-  </li>
-
-  <li>
-    <p>
-      <strong>Cross promoting your other apps</strong> &mdash; Ads can do more
-      than earn revenue. Consider running <a href=
-      "https://support.google.com/admob/v2/answer/3210452?hl=en#subid=us-en-et-dac">
-      house ads</a> within your apps to promote other apps in your portfolio.
-      When you launch a new app, this kind of promotion is a free and easy way
-      to attract new users quickly.
-    </p>
-  </li>
+  <li> Over 650,000 apps use AdMob
+  <li> $1 billion+ paid to developers in the last 2 years
+  <li> Fast, reliable payment in local currencies
+  <li> High CPMs and the best fill rates
+  <li> Industry-leading mediation platform
 </ul>
 
-<p>
-  Don't forget that paid channels like AdWords and YouTube can help you cast a
-  wider net by reaching targeted audiences outside the app ecosystem. They're a
-  great way to find new users at a price that you control. <a href=
-  "https://support.google.com/adwords/answer/2549053">Learn more</a>.
-</p>
+<p><a href="http://www.google.com/ads/admob/#subid=us-en-et-dac">Sign-up for AdMob</a>
+today and start using the <a
+href="https://developer.android.com/google/play-services/ads.html">Google Mobile Ads SDK</a>
+in your app with a few lines of code.</p>
 
-<p>
-  To start monetizing with ads, sign up for AdMob and integrate the Google
-  Mobile Ads SDK into your apps. If you also need to manage direct deals with
-  advertisers, consider using DoubleClick for Publishers Small Business.
-</p>
+<h2 id="maximize_your_ad_revenue">Maximize your ad revenue</h2>
+
+<div class="wrap">
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-4of12">
+      <h5 id="maximize_earnings">Maximize earnings</h5>
+      <p>Earn more with our industry-leading ad service, which includes <a href=
+      "https://support.google.com/admob/answer/3063564">free mediation</a> to
+      automatically improve your earnings, and access to all of Google’s advertiser
+      demand from AdMob, AdWords, and the DoubleClick Ad Exchange.</p>
+    </div>
+    <div class="col-4of12">
+      <h5 id="get_paid_fast">Get paid fast</h5>
+      <p>Get paid in local currencies quickly and reliably, with no wire fees charged by
+      AdMob.</p>
+    </div>
+    <div class="col-4of12">
+      <h5 id="easy_and_free">Easy and free</h5>
+      <p>The SDK can be installed quickly, and there are no standard fees for using the
+      platform.</p>
+    </div>
+  </div>
+</div>
+
+<h2 id="grow_your_business_with_a_trusted_partner">Grow your business with a trusted partner</h2>
+<div class="wrap">
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-6of12">
+      <h5 id="powered_by_googles_ad_technology">Powered by Google’s ad technology</h5>
+      <p>For over a decade, Google has helped millions of developers grow their digital
+      businesses.</p>
+    </div>
+    <div class="col-6of12">
+      <h5 id="auto_updates_on_google_play">Auto updates on Google Play</h5>
+      <p>AdMob’s integration with Google Play services pushes automatic performance
+        improvements to Android apps without additional SDK changes.</p>
+    </div>
+  </div>
+</div>
 
 
-<p>
-  To start monetizing with ads sign up for <a href=
-  "http://www.google.com/ads/admob/#subid=us-en-et-dac">AdMob</a> and integrate
-  the <a href="https://developers.google.com/mobile-ads-sdk/download">Google
-  Mobile Ads SDK</a> into your apps. If you also need to manage direct deals
-  with advertisers, consider using <a href=
-  "http://www.google.com/doubleclick/publishers/small-business/index.html#subid=us-en-et-dac">
-  DoubleClick for Publishers Small Business</a>.
-</p>
+<h2 id="drive_more_in-app_purchases_and_downloads">Drive more in-app purchases and downloads</h2>
+<div class="wrap">
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-6of12">
+<h5 id="sell_more_in-app_purchases">Sell more in-app purchases</h5>
+<p>Earn more revenue by intelligently promoting your in-app purchases to the users
+most likely to buy them.</p>
+    </div>
+    <div class="col-6of12">
+<h5 id="promote_your_apps_for_free">Promote your apps for free</h5>
+<p>Cross-sell your other apps (or your friend’s apps) to your existing users,
+using free AdMob <a href="https://support.google.com/admob/answer/3210452">house ads</a>.</p>
+    </div>
+  </div>
+</div>
 
-<div class="headerLine"><h2 id="related-resources">Related resources</h2></div>
+<h2 id="understand_users">Understand your users</h2>
+<div class="wrap">
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-6of12">
+<h5 id="analytics_for_apps">Analytics for apps</h5>
+<p>Analyze your app’s performance from within AdMob with Google Analytics.
+Discover where people are downloading your app, and the features they use the
+most in real time.</p>
+    </div>
+    <div class="col-6of12">
+<h5 id="flow_visualization_reports">Flow visualization reports</h5>
+<p>In Analytics, see how people are navigating through your app with graphical
+<a href="https://support.google.com/analytics/answer/2519986">flow reports</a>.
+View the path they take to making a purchase, and the point where they exit
+the app, plus much more.</p>
+    </div>
+  </div>
+</div>
+
+
+<div style="<h2 id=tips>Tips</h2>
+
+<ul>
+  <li> Place ads wisely, they shouldn't be too intrusive but still need to be clearly
+visible to attract clickthroughs.
+  <li> Use banner, interstitial, and other ad formats appropriately.
+  <li> Make use of targeting features to match ads with your users and your app.
+  <li> Remember that ads form part of your app and must match its age rating.
+  <li> Exercise control options sensibly, don't get carried away excluding potentially
+competing ads at the expense of revenue.
+</ul>
+
+
+<h2 id=related_resources>Related resources</h2>
 
 <div class="resource-widget resource-flow-layout col-13"
-  data-query="collection:distribute/monetize/advertising"
+  data-query="collection:distribute/monetize/admob"
   data-sortOrder="-timestamp"
   data-cardSizes="9x3"
   data-maxResults="6"></div>
diff --git a/docs/html/distribute/monetize/index.jd b/docs/html/distribute/monetize/index.jd
index 7350a24..dc5c704 100644
--- a/docs/html/distribute/monetize/index.jd
+++ b/docs/html/distribute/monetize/index.jd
@@ -1,4 +1,4 @@
-page.title=Monetize
+page.title=Earn
 section.landing=true
 nonavpage=true
 
@@ -17,20 +17,17 @@
   help you track where your money is coming from.
 </p>
 
-<div class="dynamic-grid">
-
   <div class="resource-widget resource-flow-layout landing col-16"
     data-query="collection:distribute/monetize"
     data-cardSizes="6x6"
     data-maxResults="9">
   </div>
 
-<h3>Related resources</h3>
+<!-- <h2>Related resources</h2>
 
   <div class="resource-widget resource-flow-layout col-16"
     data-query="tag:monetizing"
-    data-sortOrder="-timestamp"
-    data-cardSizes="6x3"
-    data-maxResults="6">
-  </div>
-</div>
+    data-cardSizes="6x2"
+    data-sortOrder="random"
+    data-maxResults="3">
+  </div> -->
\ No newline at end of file
diff --git a/docs/html/distribute/monetize/monetize_toc.cs b/docs/html/distribute/monetize/monetize_toc.cs
index 8211689..aa1bdd6 100644
--- a/docs/html/distribute/monetize/monetize_toc.cs
+++ b/docs/html/distribute/monetize/monetize_toc.cs
@@ -24,7 +24,7 @@
   </li>
   <li class="nav-section">
     <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/monetize/ads.html">
-          <span class="en">Ads</span>
+          <span class="en">AdMob Ads</span>
         </a>
     </div>
   </li>
diff --git a/docs/html/distribute/monetize/payments.jd b/docs/html/distribute/monetize/payments.jd
index 55c289f..187f872 100644
--- a/docs/html/distribute/monetize/payments.jd
+++ b/docs/html/distribute/monetize/payments.jd
@@ -1,5 +1,5 @@
 page.title=Convenient, Frictionless Purchasing
-page.image=/distribute/images/payment-method.jpg
+page.image=
 page.metaDescription=Users can purchase instantly with a choice of payment methods.
 page.tags="google play", "payments", "gift card"
 
diff --git a/docs/html/distribute/tools/index.jd b/docs/html/distribute/tools/index.jd
index c8f0212..24c3398 100644
--- a/docs/html/distribute/tools/index.jd
+++ b/docs/html/distribute/tools/index.jd
@@ -9,49 +9,39 @@
   users, and monetize your investment.
 </p>
 
-<div class="dynamic-grid">
-
-  <h3>Publishing and Launch</h3>
+  <h2>Publishing and Launch</h2>
   <div class="resource-widget resource-flow-layout landing col-16"
     data-query="collection:distribute/tools/checklists"
     data-cardSizes="9x6"
     data-maxResults="2">
   </div>
 
-<h3>Marketing Tools</h3>
+  <h2>Marketing Tools</h2>
   <div class="resource-widget resource-flow-layout landing col-16"
     data-query="collection:distribute/tools/promote"
     data-cardSizes="6x6"
     data-maxResults="3">
   </div>
 
-  <h3>Developer Support</h3>
+  <h2>Developer Support</h2>
   <div class="resource-widget resource-flow-layout landing col-16"
     data-query="collection:distribute/tools/support"
     data-cardSizes="6x6"
     data-maxResults="3">
   </div>
 
-  <h3>Developer News</h3>
+  <h2>Developer News</h2>
   <div class="resource-widget resource-flow-layout landing col-16"
     data-query="collection:distribute/tools/news"
     data-cardSizes="9x6"
     data-maxResults="2">
   </div>
 
-  <h3>More</h3>
+  <h2>More</h2>
   <div class="resource-widget resource-flow-layout landing col-16"
     data-query="collection:distribute/tools/more"
     data-cardSizes="6x6"
     data-maxResults="3">
   </div>
 
-<!--  <h3>Related Resources</h3>
-  <div class="resource-widget resource-stack-layout col-16"
-    data-query="tag:developersupport"
-    data-sortOrder="-timestamp"
-    data-numStacks="3"
-    data-maxResults="6">
-  </div> -->
 
-</div>
diff --git a/docs/html/distribute/tools/promote/device-art.jd b/docs/html/distribute/tools/promote/device-art.jd
index 814177b..d321074 100644
--- a/docs/html/distribute/tools/promote/device-art.jd
+++ b/docs/html/distribute/tools/promote/device-art.jd
@@ -16,12 +16,12 @@
 
 <div class="supported-browser">
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-3">
+<div class="cols">
+  <div class="col-3">
     <h4>Step 1</h4>
     <p>Drag a screenshot from your desktop onto a device to the right.</p>
   </div>
-  <div class="layout-content-col span-10">
+  <div class="col-10">
     <ul class="device-list primary"></ul>
     <a href="#" id="archive-expando">Older devices</a>
     <ul class="device-list archive"></ul>
@@ -30,8 +30,8 @@
 
 
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-3">
+<div class="cols">
+  <div class="col-3">
     <h4>Step 2</h4>
     <p>Customize the generated image and drag it to your desktop to save.</p>
     <p id="frame-customizations">
@@ -48,7 +48,7 @@
       <label for="output-round">Round</label><br><br>
     </p>
   </div>
-  <div class="layout-content-col span-10">
+  <div class="col-10">
     <!-- position:relative fixes an issue where dragging an image out of a inline-block container
          produced no drag feedback image in Chrome 28. -->
     <div id="output" style="position:relative">No input image.</div>
diff --git a/docs/html/distribute/users/appindexing.jd b/docs/html/distribute/users/appindexing.jd
new file mode 100644
index 0000000..6a3fec6
--- /dev/null
+++ b/docs/html/distribute/users/appindexing.jd
@@ -0,0 +1,46 @@
+page.title=Drive installs from Google Search
+page.metaDescription=Surface the content of your apps in Google Search and link it to app installs.
+meta.tags="getusers", "search", "appindexing"
+page.image=images/cards/google-search_2x.png
+@jd:body
+
+<p>Google Search now helps users discover your app, with App Indexing. When users
+search with Google on their Android device the results will include details of
+relevant, indexed apps. The search results will include an install button that
+takes users to your app in the Google Play store. And when your app is
+installed, the user will be taken straight to the right content within it.</p>
+
+<div class="figure-left">
+<img src="{@docRoot}images/distribute/appindexing.gif">
+</div>
+
+<p>This free service expands your opportunities to turn the investment you’ve made
+in creating an outstanding app or game into installs. </p>
+
+<p>Start now by adding deep linking support to your app, verifying your app’s
+official website, and defining deep links. To learn how, check out these <a
+href="https://developers.google.com/app-indexing/webmasters/details">instructions</a>. </p>
+
+<p>Once your app is index, links to its content will join the 30 billion app index
+links already available to Google Search.</p>
+
+<h2 id=tips>Tips</h2>
+
+<ul>
+  <li> App Indexing will also be used as a ranking signal for all users on Android,
+regardless of whether they have your app installed or not. 
+  <li> App Indexing also helps drive use of your app — when your app is installed on a
+user’s device, search results will include deep links to your app that bring
+the user straight to the relevant app content.
+  <li> Use the App Indexing API to help users discover relevant content in your app
+before they complete a query with auto-completions.
+</ul>
+
+<h2 id=related_resources>Related resources</h2>
+
+<div class="resource-widget resource-flow-layout col-13"
+  data-query="collection:distribute/users/appindexing"
+  data-sortOrder="-timestamp"
+  data-cardSizes="9x3"
+  data-maxResults="6"></div>
+
diff --git a/docs/html/distribute/users/house-ads.jd b/docs/html/distribute/users/house-ads.jd
new file mode 100644
index 0000000..d662fb2
--- /dev/null
+++ b/docs/html/distribute/users/house-ads.jd
@@ -0,0 +1,61 @@
+page.title=Cross-Sell to Users with House Ads
+page.metaDescription=Tap into your existing user base to increase downloads and increase conversions.
+page.tags="google", "identity", "signin"
+page.image=distribute/images/advertising.jpg
+
+@jd:body
+
+<p>One of the fastest ways to accumulate downloads or increase conversions is to tap into your
+existing user base. These users know your products and are a receptive audience for your other
+apps and in-app products.</p>
+
+<h3>Promote your apps for free</h3>
+
+<p>AdMob's house ads let you cross-sell your other apps (or your friend’s apps) to your
+existing users, and it's a free service.</p>
+
+<h3>Sell more in-app purchases</h3>
+
+<p>Intelligently promote your in-app purchases to the users most likely to buy them, with
+AdMob’s free in-app purchase house ad format.</p>
+
+<p>Get started <a href="https://developers.google.com/identity/sign-in/">integrating
+Google sign-in into your apps and games</a>.</p>
+
+<div class="wrap">
+  <div class="cols" style="margin:1em auto;">
+    <div class="col-8of12">
+     <img src="{@docRoot}images/distribute/house-ads.png" style="padding-top:1em;">
+    </div>
+  </div>
+</div>
+
+<p><a href="http://www.google.com/ads/admob/#subid=us-en-et-dac">Sign-up for AdMob</a> today
+and start using the <a href="https://developer.android.com/google/play-services/ads.html">Google
+Mobile Ads SDK</a> included in Google Play services to show ads in your app with a few lines of
+code. Then create your <a href="https://support.google.com/admob/answer/3210442?hl=en">house
+ad campaigns</a>.</p>
+
+<h2>Tips</h2>
+
+<ul>
+  <li>AdMob automatically figures out which of your users are likely to spend to optimize which
+  users see the ads.</li>
+  <li>Place ads wisely, they shouldn't be too intrusive but still need to be clearly visible to
+  attract clickthroughs.</li>
+  <li>Remember that ads form part of your app and must match its age rating.</li>
+  <li>Use the impression goals feature of AdMob house ads to set limits on the number of ads
+  served. This is useful if you want to run ad campaigns in your app from other developers.</li>
+</ul>
+
+
+<h2 style="clear:both" id="related-resources">Related Resources</h2>
+
+<div class="resource-widget resource-flow-layout col-13"
+  data-query="collection:distribute/users/houseads"
+  data-sortorder="-timestamp"
+  data-cardsizes="6x3"
+  data-maxresults="6">
+</div>
+
+
diff --git a/docs/html/distribute/users/index.jd b/docs/html/distribute/users/index.jd
index a810f36..a3f8d01 100644
--- a/docs/html/distribute/users/index.jd
+++ b/docs/html/distribute/users/index.jd
@@ -10,21 +10,23 @@
   developers. These best practices are critical to your app or game’s success.
 </p>
 
-<div class="dynamic-grid">
-
 <div class="resource-widget resource-flow-layout landing col-16"
   data-query="collection:distribute/users"
   data-cardSizes="6x6"
   data-maxResults="6">
 </div>
+<div class="resource-widget resource-flow-layout landing col-16"
+  data-query="collection:distribute/users"
+  data-cardSizes="9x3"
+  data-maxResults="16">
+</div>
 
-<h3>Related resources</h3>
+<!-- <h2>Related resources</h2>
 
   <div class="resource-widget resource-flow-layout col-16"
-    data-query="type:youtube+tag:users,tag:global,type:blog+tag:users"
-    data-sortOrder="-timestamp"
-    data-cardSizes="6x3"
-    data-maxResults="6">
-  </div>
-  
-</div>
+    data-query="tag:users"
+    data-sortOrder="random"
+    data-cardSizes="6x2"
+    data-maxResults="3">
+  </div> -->
+
diff --git a/docs/html/distribute/users/ota-installs.jd b/docs/html/distribute/users/ota-installs.jd
new file mode 100644
index 0000000..f703257
--- /dev/null
+++ b/docs/html/distribute/users/ota-installs.jd
@@ -0,0 +1,51 @@
+page.title=Offer Over-the-air Installs
+page.metaDescription=Let users send your app directly to their devices when they sign in with Google.
+page.tags="google", "identity", "installs"
+page.image=images/cards/google-sign-in_2x.png
+
+
+@jd:body
+
+<p>Google sign-in is a trusted registration system that's familiar to users and
+consistent across devices. With minimal effort, you can improve your sign-in conversion
+with a fast and secure authentication option for users. And by using Google sign-in,
+you can offer users the option to send your app directly to their Android devices when
+they sign-in, without the need for them to visit the Play store. Using this approach,
+some developers have seen app installation acceptance rates of 40%.</p>
+
+<p>Get started with <a href="https://developers.google.com/identity/sign-in/android/">
+Google sign-in for Android</a> and then enable <a
+href="https://developers.google.com/identity/sign-in/web/android-app-installs">over-the-air
+installs</a> for your web site.</p>
+
+<div class="wrap">
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-8of12 col-push-1of12">
+     <img src="{@docRoot}images/distribute/ota-installs.gif">
+    </div>
+  </div>
+</div>
+
+
+<h2>Tips</h2>
+
+<ul>
+  <li>Adding Google sign-in to your app can increase conversions by reducing the burden
+  and friction of sign-in, while helping users keep their accounts secure.</li>
+  <li>Focus on the quality of your app to ensure that it passes the quality threshold for
+  over-the-air installation.</li>
+  <li>Measure impressions of the Android install prompt, installs, and success rate by
+  day, week, and month with Platform Insights.</li>
+</ul>
+
+
+<h2 style="clear:both" id="related-resources">Related Resources</h2>
+
+<div class="resource-widget resource-flow-layout col-13"
+  data-query="collection:distribute/users/otas"
+  data-sortorder="-timestamp"
+  data-cardsizes="9x3"
+  data-maxresults="4">
+</div>
+
+
diff --git a/docs/html/distribute/users/promote-with-ads.jd b/docs/html/distribute/users/promote-with-ads.jd
index 1e28ae1..3456c66 100644
--- a/docs/html/distribute/users/promote-with-ads.jd
+++ b/docs/html/distribute/users/promote-with-ads.jd
@@ -1,45 +1,143 @@
 page.title=Promote Your App with Ads
-page.metaDescription=Promote your app through AdMob, AdWords, and YouTube to find new users at the right moment.
-page.image=/images/gp-ads-console.jpg
-page.tags="users, ads, analytics"
-
+page.metaDescription=Promote your app with AdWords to find new users at the right moment.
+page.image=images/cards/adwords_2x.jpg
+page.tags="users, ads, adwords"
 @jd:body
 
-<p>
-  AdMob is Google's advertising platform for mobile apps. You can use it to
-  monetize your app and promote your apps, and you can link your Google
-  Analytics account to AdMob so you can analyze your apps &mdash; all in one
-  place.
-</p>
+<p>Users have a huge amount of choice when it comes to which apps they install and
+use, so it’s important to actively find new ways to promote your app and drive
+ongoing engagement. AdWords is a powerful and effective way to do both.</p>
 
-<p>
-  <a href="http://www.google.com/ads/admob/">AdMob</a> is the largest mobile ad
-  app network. But you get more than just massive scale: AdMob will soon help
-  you find the right users in related apps. If your app is for bicycling, AdMob
-  can promote your app on other fitness and cycling-related apps worldwide.
-  <a href=
-  "https://apps.admob.com/admob/signup?subid=us-en-et-dac&_adc=ww-ww-et-admob2&hl=en">
-  Sign up for AdMob</a>.
-</p>
 
-<p>
-  AdMob also offers new solutions to help you achieve app-related goals such as
-  downloads, re-engagement and in-app purchases using Google search and the
-  Google Display Network. These solutions include streamlined campaign creation
-  flows and tools to track performance across the entire app lifecycle.
-  <a href="https://support.google.com/adwords/answer/2549053?hl=en">Learn
-  More</a>.
-</p>
-<div style="margin-top:2em;">
-  <img src="{@docRoot}images/gp-ads-console.jpg">
+<h2 id=drive_installs>Drive installs</h2>
+
+<p><a href="http://adwords.google.com">AdWords</a> promotes your app to interested
+users where they spend time on phones and
+tablets – with app install ads on Google Search, YouTube, Gmail, and within
+apps and across the web on  the Google Display Network. AdWords is a powerful
+way to scale app promotion across Google networks and find customers that are
+most likely to install your app. </p>
+
+<p><a href="https://support.google.com/adwords/answer/6032059">Get started with AdWords
+app install ads</a>.</p>
+
+
+
+<div class="wrap">
+  <div class="cols" style="margin-top:1em;">
+    <div class="col-4of12">
+   <h3>From Google Play</h3>
+    <img src="/images/distribute/promote_ads_play.png">
+    <p class="figure-caption">Search ads on Google Play are still undergoing testing and
+    not yet available to buy. <a
+    href="http://android-developers.blogspot.com/2015/02/a-new-way-to-promote-your-app-on-google.html">Find
+    out more</a>.</p>
+    </div>
+    <div class="col-4of12">
+  <h3>From search</h3>
+    <img src="/images/distribute/promote_ads_search.png">
+    <p class="figure-caption">Connect with users as they search for content and services
+    provided by your app.</p>
+    </div>
+    <div class="col-4of12">
+   <h3>From YouTube</h3>
+   <img src="/images/distribute/promote_ads_youtube.png">
+    <p class="figure-caption">Promote your app when users are watching related videos.</p>
+    </div>
+  </div>
 </div>
 
-<div class="headerLine">
+<div class="wrap">
+  <div class="cols" style="margin-top:1em;">
+    <div class="col-4of12">
+    <h3>From apps</h3>
+    <img src="/images/distribute/promote_ads_apps.png">
+    <p class="figure-caption">Reach users while they’re engaged with apps and games across the
+    AdMob network.</p>
+    </div>
+    <div class="col-4of12">
+   <h3>From the web</h3>
+   <img src="/images/distribute/promote_ads_web.png">
+    <p class="figure-caption">Reach users while they’re engaged with websites across the Google
+    Display Network.</p>
+    </div>
+    <div class="col-4of12">
+    <h3>From Gmail</h3>
+    <img src="/images/distribute/promote_ads_gmail.png">
+    <p class="figure-caption">Promote your app while users communicate and get things done in
+    Gmail.</p>
+    </div>
+  </div>
+</div>
+
+
+<h2>Tips</h3>
+
+<ul>
+  <li> Estimate how much an app user is worth to your business, so that you can work
+out an appropriate cost-per-install that you’re willing to pay.
+  <li> Ensure that your ads and Play Store listing are compelling and clearly describe
+your app’s value.
+  <li> Check that you’re accurately tracking and attributing installs by installing
+the AdWords <a href="https://developers.google.com/app-conversion-tracking/">conversion tracking SDK</a>.
+  <li> Promote your app broadly across display, search, and video to reach even more
+potential users and drive a higher volume of installs.
+  <li> Start with broader targeting and then fine tune your bidding once you’ve
+assessed your campaign results.
+  <li> Use Conversion Optimizer to automate your bidding so that your ads target users
+who are most likely to install your app. 
+  <li> Use Conversion Optimizer for in-app buyers to automate your bidding so that
+your ads target high value users who are most likely to make purchases in your
+app.
+</ul>
+
+
+<h2 id=engage_with_users>Engage with users</h2>
+
+<p>Getting a user to install an app is one thing, but you'll also want them to
+open it regularly. AdWords offers app re-engagement tools to help your app stay
+in mind with users who’ve already installed it on their phone. AdWords can
+remind them of key features and encourage them to try your app again, or help
+them complete an activity they didn't know your app could handle.</p>
+
+
+<div class="wrap">
+  <div class="cols" style="margin-top:1em;">
+    <div class="col-4of12">
+   <h3>From search</h3>
+   <img src="/images/distribute/promote_ads.png">
+    <p class="figure-caption">Add deep links to your app, then bring users straight
+    to relevant app content when they’re searching.</p>
+    </div>
+    <div class="col-4of12">
+    <h3>From apps</h3>
+    <img src="/images/distribute/promote_ads_inapp.png">
+    <p class="figure-caption">Use remarketing and deep links to bring users to just the right
+    place in your app to re-engage and convert, from other apps and games they love.</p>
+    </div>
+  </div>
+</div>
+
+
+<h3>Tips</h3>
+
+<ul>
+  <li> Track what users do in your app after they’ve clicked an ad, by installing the
+AdWords <a href="https://developers.google.com/app-conversion-tracking/">conversion tracking SDK</a>.
+  <li> Advertise a compelling reason for users to re-engage with your app (such as a
+reminder or a special offer).
+  <li> <a href="https://developers.google.com/app-indexing/webmasters/app">Add deep links</a> to your app that’ll take users  directly to the parts of your app that will be
+most relevant and interesting to them, where they can easily take action.
+  <li> Re-engage your app users across the display network with remarketing lists and
+search with keywords.
+  <li> Use remarketing lists to target high value users so that you can drive more
+conversions in your app.
+</ul>
+
 <h2 id="related-resources">Related Resources</h2>
-</div>
 
 <div class="resource-widget resource-flow-layout col-13"
   data-query="collection:distribute/users/promotewithads"
   data-sortOrder="-timestamp"
   data-cardSizes="9x3"
-  data-maxResults="6"></div>
\ No newline at end of file
+  data-maxResults="6"></div>
diff --git a/docs/html/distribute/users/users_toc.cs b/docs/html/distribute/users/users_toc.cs
index edfa874..3aa3fe1 100644
--- a/docs/html/distribute/users/users_toc.cs
+++ b/docs/html/distribute/users/users_toc.cs
@@ -11,18 +11,6 @@
     </div>
   </li>
   <li class="nav-section">
-    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/users/build-buzz.html">
-          <span class="en">Build Buzz</span>
-        </a>
-    </div>
-  </li>
-  <li class="nav-section">
-    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/users/build-community.html">
-          <span class="en">Build Community</span>
-        </a>
-    </div>
-  </li>
-  <li class="nav-section">
     <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/users/expand-to-new-markets.html">
           <span class="en">Expand to New Markets</span>
         </a>
@@ -34,6 +22,42 @@
         </a>
     </div>
   </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/users/appindexing.html">
+          <span class="en">Drive Installs through Search</span>
+        </a>
+    </div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/users/ota-installs.html">
+          <span class="en">Offer Over-the-air Installs</span>
+        </a>
+    </div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/users/house-ads.html">
+          <span class="en">Cross-Sell to Users with House Ads</span>
+        </a>
+    </div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/users/youtube.html">
+          <span class="en">Drive installs from YouTube</span>
+        </a>
+    </div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/users/build-buzz.html">
+          <span class="en">Build Buzz</span>
+        </a>
+    </div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/users/build-community.html">
+          <span class="en">Build Community</span>
+        </a>
+    </div>
+  </li>
 </ul>
 
 
diff --git a/docs/html/distribute/users/youtube.jd b/docs/html/distribute/users/youtube.jd
new file mode 100644
index 0000000..0be6584
--- /dev/null
+++ b/docs/html/distribute/users/youtube.jd
@@ -0,0 +1,34 @@
+page.title=Drive installs from YouTube
+page.metaDescription=Bring users from videos to your store listing with a merchandise card available on YouTube.
+page.image=images/cards/card-youtube_2x.png
+page.tags="users, youtube, cards, videos"
+@jd:body
+
+<p>Now you can bring users who discover your app videos on YouTube to your store listing with a merchandise card, one of several card types available to add to YouTube videos. Once published the presence of the merchandise card is indicated in the video with an information icon. When a viewer opens the card they follow the link to your app on the Play Store, where they can install your app.</p>
+
+<div class="wrap" style="margin:2em auto">
+  <div class="cols">
+    <div class="col-9of12">
+      <img src="{@docRoot}images/distribute/youtube-card-example.png">
+    </div>
+  </div>
+</div>
+
+<p>Get started <a href="https://support.google.com/youtube/answer/6140493">adding merchandise cards to your uploaded videos</a>.</p>
+
+<h2>Tips</h2>
+<ul>
+<li>Don’t indicate the location of a card within your video, cards might be positioned differently on different devices.</li>
+<li>When you add cards, featured video or playlist highlights in your video are hidden. </li>
+<li>In order to display cards, your account needs to be in good standing.</li>
+<li>Performance reporting for cards is available in YouTube Analytics.</li>
+<li>Cards work better when they're not too close to each other. Try spacing them out.</li>
+</ul>
+
+<h2 id="related-resources">Related resources</h2>
+
+<div class="resource-widget resource-flow-layout col-13"
+  data-query="collection:distribute/users/youtube"
+  data-sortOrder="-timestamp"
+  data-cardSizes="9x3"
+  data-maxResults="6"></div>
diff --git a/docs/html/google/gcm/c2dm.jd b/docs/html/google/gcm/c2dm.jd
deleted file mode 100644
index bc58e66..0000000
--- a/docs/html/google/gcm/c2dm.jd
+++ /dev/null
@@ -1,119 +0,0 @@
-page.title=Migration
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Quickview</h2>
-
-<ul>
-<li>Understand the differences between GCM and C2DM.</li>
-<li>Learn how to migrate an app from C2DM to GCM.</li>
-
-</ul>
-
-
-<h2>In this document</h2>
-
-<ol>
-<li><a href="#history">Historical Overview</a></li>
-<li><a href="#diffs">How is GCM Different from C2DM?</a>
-  <ol>
-    <li><a href="#interop">Relationship between C2DM and GCM</a></li>
-  </ol>
-</li>
-<li><a href="#migrating">Migrating Your Apps</a>
-  <ol>
-    <li><a href="#client">Client changes</a></li>
-    <li><a href="#server">Server changes</a></li>
-  </ol>
-</li>
-</ol>
-
-</div>
-</div>
-
-<p>Android Cloud to Device Messaging (C2DM) was officially deprecated on June 26, 2012, and will be
- shut down completely as of July 30, 2015.  <strong>C2DM developers are strongly encouraged to move
-  to Google Cloud Messaging (GCM)</strong>. GCM is the next generation of C2DM.</p>
-
-<p>This document is addressed to  C2DM developers who are moving to GCM. It describes the differences between GCM and C2DM, and explains how to migrate existing C2DM apps to GCM.</p>
-
-
-<h2 id="history">Historical Overview</h2>
-<p>C2DM  was launched in 2010 to help Android apps send data from servers to their applications. Servers can tell apps to contact the server directly, to fetch updated application or user data. The C2DM service handles all aspects of queueing of messages and delivery to the target application running on the target device.</p>
-<p>GCM replaces C2DM. The focus of GCM is as follows:</p>
-<ul>
-  <li> Ease of use. No sign-up forms.</li>
-  <li>No quotas.</li>
-  <li>GCM and C2DM stats are available through the <a href="http://play.google.com/apps/publish">Developer Console</a>.</li>
-  <li>Battery efficiency.</li>
-  <li>Rich set of new APIs.</li>
-</ul>
-<h2 id="diffs">How is GCM Different from C2DM?</h2>
-<p>GCM builds on the core foundation of C2DM. Here is what's different:</p>
-
-<dl>
-<dt><strong>Simple API Key</strong></dt>
-<dd>To use the GCM service, you need to obtain a Simple API Key from Google APIs console page. For more information, see <a href="gs.html">Getting Started</a>. Note that GCM <em>only</em> accepts Simple API Key&mdash;using ClientLogin or OAuth2 tokens will not work.
-</dd>
-<dt><strong>Sender ID</strong></dt>
-<dd>In C2DM, the Sender ID is an email address. In GCM, the Sender ID is a project number that you acquire from the API console, as described in <a href="gs.html#create-proj">Getting Started</a>. </dd>
-
-<dt><strong>JSON format</strong></dt>
-<dd>GCM HTTP requests support JSON format in addition to plain text. For more information, see the <a href="gcm.html#send-msg">Architectural Overview</a>.</dd>
-
-<dt><strong>Multicast messages</strong></dt>
-<dd>In GCM you can send the same message to multiple devices simultaneously. For example, a sports app wanting to deliver a score update to fans can now send the message to up to 1000 registration IDs in the same request (requires JSON). For more information, see the <a href="gcm.html#send-msg">Architectural Overview</a>.</dd>
-
-<dt><strong>Multiple senders</strong></dt>
-<dd>Multiple parties can send messages to the same app with one common registration ID. For more information, see <a href="adv.html#multi-senders">Advanced Topics</a>.</dd>
-
-<dt><strong>Time-to-live messages</strong></dt>
-<dd>Apps like video chat and calendar apps can send expiring invitation events with a time-to-live value between 0 and 4 weeks. GCM will store the messages until they expire. A message with a time-to-live value of 0 will not be stored on the GCM server, nor will it be throttled. For more information, see <a href="adv.html#ttl">Advanced Topics</a>.</dd>
-
-<dt><strong>Messages with payload</strong></dt>
-<dd>Apps can use &quot;messages with payload&quot; to deliver  messages of up to 4 Kb. This would be useful in a chat application, for example. To use this feature, simply omit the <code>collapse_key</code> parameter and messages will not be collapsed. GCM will store up to 100 messages. If you exceed that number, all messages will be discarded but you will receive a special message. If an application receives this message, it needs to sync with the server. For more information, see <a href="adv.html#collapsible">Advanced Topics</a>.</dd>
-
-<dt><strong>Canonical registration ID</strong></dt>
-<dd>There may be situations where the server ends up with 2 registration IDs for the same device. If the GCM response contains a registration ID, simply replace the registration ID you have with the one provided. With this feature your application doesn't need to send the device ID to your server anymore. For more information, see <a href="adv.html#canonical">Advanced Topics</a>.</dd>
-</dl>
-
-<h3 id="interop">Relationship between C2DM and GCM</h3>
-
-<p>C2DM and GCM are not interoperable. For example, you cannot post notifications from GCM to C2DM registration IDs, nor can you use C2DM registration IDs as GCM registration IDs. From your server-side application, you must keep track of whether a registration ID is from C2DM or GCM and use the proper endpoint. </p>
-
-<p>As you transition from C2DM to GCM, your server needs to be aware of whether a given registration ID
-contains an old C2DM sender or a new GCM project number. This is the approach we recommend: have the new app version (the one that uses GCM) send a bit along with the registration ID. This bit tells your server that this registration ID is for GCM. If you don't get the extra bit, you mark the registration ID as C2DM. Once no more valid registration IDs are marked as C2DM, you can complete the migration.</p>
-
-<h2 id="migrating">Migrating Your Apps</h2>
-<p>This section describes how to move existing C2DM apps to GCM.</p>
-<h3 id="client">Client changes</h3>
-<p>Migration is simple! Just re-register the client app for your target GCM-enabled platform. For
-  example, see <a href="{@docRoot}google/gcm/client.html#sample-register">Register for GCM</a></p>
-
-<p>After receiving a response from GCM, the registration ID obtained must be sent to the application server. When doing this, the application should indicate that it is sending a GCM registration ID so that the server can distinguish it from existing C2DM registrations.</p>
-
-<h3 id="server">Server changes</h3>
-<p>When the application server receives a GCM registration ID, it should store it and mark it as such.</p>
-<p>Sending messages to GCM devices requires a few changes:</p>
-<ul>
-  <li> The request should be sent to  a new endpoint: <code>https://android.googleapis.com/gcm/send</code>.</li>
-  <li>The Authorization header of the request should contain the API key generated during sign up. This key replaces the deprecated ClientLogin Auth token.</li>
-</ul>
-<p>For example:
-</p>
-<pre>Content-Type:application/json
-Authorization:key=AIzaSyB-1uEai2WiUapxCs2Q0GZYzPu7Udno5aA
-
-{
-  "registration_id" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
-  "data" : {
-    "Team" : "Portugal",
-    "Score" : "3",
-    "Player" : "Varela",
-  },
-}</pre>
-<p>For a detailed discussion of this topic and more examples, see the <a href="gcm.html#send-msg">Architectural Overview</a>.</p>
-<p>Eventually, once enough users of your application have migrated to the new service, you might want to take advantage of the new <a href="gcm.html#send-msg">JSON-formatted</a> requests that give access to the full set of features provided by GCM.</p>
-
diff --git a/docs/html/google/gcm/ccs.jd b/docs/html/google/gcm/ccs.jd
deleted file mode 100644
index c4d1b1d..0000000
--- a/docs/html/google/gcm/ccs.jd
+++ /dev/null
@@ -1,963 +0,0 @@
-page.title=GCM Cloud Connection Server (XMPP)
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-
-<h2>In this document</h2>
-
-<ol class="toc">
-  <li><a href="#connecting">Establishing a Connection</a>
-    <ol class="toc">
-      <li><a href="#auth">Authentication</a></li>
-      </ol>
-      </li>
-    <li><a href="#format">Downstream Messages</a>
-      <ol class="toc">
-        <li><a href="#request">Request format</a></li>
-        <li><a href="#response">Response format</a></li>
-        <li><a href="#receipts">Receive delivery receipts</a></li>
-      </ol>
-      </li>
-  <li><a href="#upstream">Upstream Messages</a>
-  </li>
-  <li><a href="#flow">Flow Control</a> </li>
-  <li><a href="#implement">Implementing an XMPP-based App Server</a>
-    <ol class="toc">
-      <li><a href="#smack">Java sample using the Smack library</a></li>
-      <li><a href="#python">Python sample</a></li>
-    </ol>
-  </li>
-</ol>
-
-<h2>See Also</h2>
-
-<ol class="toc">
-<li><a href="server-ref.html">Server Reference</a></li>
-<li><a href="{@docRoot}google/gcm/http.html">HTTP</a></li>
-<li><a href="{@docRoot}google/gcm/gs.html">Getting Started</a></li>
-<li><a href="{@docRoot}google/gcm/server.html">Implementing GCM Server</a></li>
-<li><a href="{@docRoot}google/gcm/client.html">Implementing GCM Client</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>The Google Cloud Messaging (GCM) Cloud Connection Server (CCS) is an XMPP endpoint that provides a
-persistent, asynchronous, bidirectional connection to Google servers. The
-connection can be used to send and receive messages between your server and
-your users' GCM-connected devices.</p>
-
-<p class="note"><strong>Note:</strong> The content in this document
-applies to <a href="http://developer.chrome.com/apps/cloudMessaging">
-GCM with Chrome apps</a> as well as Android.
-
-<p>You can continue to use the HTTP request mechanism to send messages to GCM
-servers, side-by-side with CCS which uses XMPP. Some of the benefits of CCS include:</p>
-
-<ul>
-  <li>The asynchronous nature of XMPP allows you to send more messages with fewer
-resources.</li>
-  <li>Communication is bidirectional&mdash;not only can your server send messages
-to the device, but the device can send messages back to your server.</li>
-  <li>The device can send messages back using the same connection used for receiving,
-thereby improving battery life.</li>
-</ul>
-
-<p>The upstream messaging (device-to-cloud) feature of CCS is part of the Google
-Play services platform. Upstream messaging is available through the
-<a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">
-{@code GoogleCloudMessaging}</a>
-APIs. For examples, see
-<a href="#implement">Implementing an XMPP-based App Server</a>.</p>
-
-<p class="note"><strong>Note:</strong> See the
-<a href="server-ref.html">Server Reference</a> for a list of all the message
-parameters and which connection server(s) supports them.</p>
-
-<h2 id="connecting">Establishing a Connection</h2>
-
-<p>CCS just uses XMPP as an authenticated transport layer, so you can use most
-XMPP libraries to manage the connection. For an example, see <a href="#smack">
-Java sample using the Smack library</a>.</p>
-
-<p>The CCS XMPP endpoint runs at {@code gcm.googleapis.com:5235}. When testing
-functionality (with non-production users), you should instead connect to
-{@code gcm-preprod.googleapis.com:5236} (note the different port). Regular
-testing on preprod (a smaller environment where the latest CCS builds run) is
-beneficial both for isolating real users from test code, as well as for early
-detection of unexpected behavior changes. Note that a connection receives upstream
-messages destined for its GCM sender ID, regardless of which environment (gcm or
-gcm-preprod) it is connected to. Therefore, test code connecting to
-{@code gcm-preprod.googleapis.com:5236} should use a different GCM sender ID to
-avoid upstream messages from production traffic being sent over test connections.</p>
-
-<p>The connection has two important requirements:</p>
-
-<ul>
-  <li>You must initiate a Transport Layer Security (TLS) connection. Note that
-  CCS doesn't currently support the <a href="http://xmpp.org/rfcs/rfc3920.html"
-  class="external-link" target="_android">STARTTLS extension</a>.</li>
-  <li>CCS requires a SASL PLAIN authentication mechanism using
-  {@code &lt;your_GCM_Sender_Id&gt;&#64;gcm.googleapis.com} (GCM sender ID)
-  and the API key as the password, where the sender ID and API key are the same
-  as described in <a href="gs.html">Getting Started</a>.</li>
-</ul>
-
-<p>If at any point the connection fails, you should immediately reconnect.
-There is no need to back off after a disconnect that happens after
-authentication.</p>
-
-<h3 id="auth">Authentication</h3>
-
-<p>The following snippets illustrate how to perform authentication in CCS.</p>
-<h4>Client</h4>
-<pre>&lt;stream:stream to=&quot;gcm.googleapis.com&quot; 
-        version=&quot;1.0&quot; xmlns=&quot;jabber:client&quot; 
-        xmlns:stream=&quot;http://etherx.jabber.org/streams&quot;/&gt;
-</pre>
-<h4>Server</h4>
-<pre>&lt;str:features xmlns:str=&quot;http://etherx.jabber.org/streams&quot;&gt;
- &lt;mechanisms xmlns=&quot;urn:ietf:params:xml:ns:xmpp-sasl&quot;&gt;
-   &lt;mechanism&gt;X-OAUTH2&lt;/mechanism&gt;
-   &lt;mechanism&gt;X-GOOGLE-TOKEN&lt;/mechanism&gt;
-   &lt;mechanism&gt;PLAIN&lt;/mechanism&gt;
- &lt;/mechanisms&gt;
-&lt;/str:features&gt;
-</pre>
-
-<h4>Client</h4>
-<pre>&lt;auth mechanism=&quot;PLAIN&quot;
-xmlns=&quot;urn:ietf:params:xml:ns:xmpp-sasl&quot;&gt;MTI2MjAwMzQ3OTMzQHByb2plY3RzLmdjbS5hb
-mFTeUIzcmNaTmtmbnFLZEZiOW1oekNCaVlwT1JEQTJKV1d0dw==&lt;/auth&gt;
-</pre>
-
-<h4>Server</h4>
-<pre>&lt;success xmlns=&quot;urn:ietf:params:xml:ns:xmpp-sasl&quot;/&gt;</pre>
-
-<h2 id="format">Downstream Messages</h2>
-<p>Once the XMPP connection is established, CCS and your server use normal XMPP
-<code>&lt;message&gt;</code> stanzas to send JSON-encoded messages back and
-forth. The body of the <code>&lt;message&gt;</code> must be:</p>
-<pre>
-&lt;gcm xmlns:google:mobile:data&gt;
-    <em>JSON payload</em>
-&lt;/gcm&gt;
-</pre>
-
-<p>The JSON payload for regular GCM messages is similar to
-<a href="http.html#request">what the GCM http endpoint uses</a>, with these
-exceptions:</p>
-<ul>
-  <li>There is no support for multiple recipients.</li>
-  <li>{@code to} is used instead of {@code registration_ids}.</li>
-  <li>CCS adds the field {@code message_id}, which is required. This ID uniquely
-identifies the message in an XMPP connection. The ACK or NACK from CCS uses the
-{@code message_id} to identify a message sent from 3rd-party app servers to CCS.
-Therefore, it's important that this {@code message_id} not only be unique (per
-sender ID), but always present.</li>
-</ul>
-
-<p>In addition to regular GCM messages, control messages are sent, indicated by
-the {@code message_type} field in the JSON object. The value can be either
-'ack' or 'nack', or 'control' (see formats below). Any GCM message with an
-unknown {@code message_type} can be ignored by your server.</p>
-
-<p>For each device message your app server receives from CCS, it needs to send
-an ACK message.
-It never needs to send a NACK message. If you don't send an ACK for a message,
-CCS resends it the next time a new XMPP connection is established, unless the
-message expires first.
-</p>
-<p>CCS also sends an ACK or NACK for each server-to-device message. If you do not
-receive either, it means that the TCP connection was closed in the middle of the
-operation and your server needs to resend the messages. See
-<a href="#flow">Flow Control</a> for details.
-</p>
-
-<p class="note"><strong>Note:</strong> See the
-<a href="server-ref.html">Server Reference</a> for a list of all the message
-parameters and which connection server(s) supports them.</p>
-
-<h3 id="request">Request format</h3>
-
-<p>Here is an XMPP stanza containing the JSON message from a 3rd-party app server to CCS:
-
-</p>
-<pre>&lt;message id=&quot;&quot;&gt;
-  &lt;gcm xmlns=&quot;google:mobile:data&quot;&gt;
-  {
-      &quot;to&quot;:&quot;REGISTRATION_ID&quot;,  // &quot;to&quot; replaces &quot;registration_ids&quot;
-      &quot;message_id&quot;:&quot;m-1366082849205&quot; // new required field
-      &quot;data&quot;:
-      {
-          &quot;hello&quot;:&quot;world&quot;,
-      }
-      &quot;time_to_live&quot;:&quot;600&quot;,
-      &quot;delay_while_idle&quot;: true/false,
-      &quot;delivery_receipt_requested&quot;: true/false
-  }
-  &lt;/gcm&gt;
-&lt;/message&gt;
-</pre>
-
-<h3 id="response">Response format</h3>
-
-<p>A CCS response can have 3 possible forms. The first one is a regular 'ack'
-message. But when the response contains an error, there are 2
-different forms the message can take, described below.</p>
-
-<h4 id="ack">ACK message</h4>
-
-<p>Here is an XMPP stanza containing the ACK/NACK message from CCS to 3rd-party app server:
-</p>
-<pre>&lt;message id=&quot;&quot;&gt;
-  &lt;gcm xmlns=&quot;google:mobile:data&quot;&gt;
-  {
-      &quot;from&quot;:&quot;REGID&quot;,
-      &quot;message_id&quot;:&quot;m-1366082849205&quot;
-      &quot;message_type&quot;:&quot;ack&quot;
-  }
-  &lt;/gcm&gt;
-&lt;/message&gt;
-</pre>
-
-<h4 id="nack">NACK message</h4>
-
-<p>A NACK error is a regular XMPP message in which the {@code message_type} status
-message is &quot;nack&quot;. A NACK message contains:</p>
-<ul>
-<li>Nack error code.</li>
-<li>Nack error description.</li>
-</ul>
-
-<p>Below are some examples.</p>
-
-<p>Bad registration:</p>
-
-<pre>&lt;message&gt;
-  &lt;gcm xmlns=&quot;google:mobile:data&quot;&gt;
-  {
-    &quot;message_type&quot;:&quot;nack&quot;,
-    &quot;message_id&quot;:&quot;msgId1&quot;,
-    &quot;from&quot;:&quot;SomeInvalidRegistrationId&quot;,
-    &quot;error&quot;:&quot;BAD_REGISTRATION&quot;,
-    &quot;error_description&quot;:&quot;Invalid token on 'to' field: SomeInvalidRegistrationId&quot;
-  }
-  &lt;/gcm&gt;
-&lt;/message&gt;</pre>
-
-<p>Invalid JSON:</p>
-
-<pre>&lt;message&gt;
- &lt;gcm xmlns=&quot;google:mobile:data&quot;&gt;
- {
-   &quot;message_type&quot;:&quot;nack&quot;,
-   &quot;message_id&quot;:&quot;msgId1&quot;,
-   &quot;from&quot;:&quot;APA91bHFOtaQGSwupt5l1og&quot;,
-   &quot;error&quot;:&quot;INVALID_JSON&quot;,
-   &quot;error_description&quot;:&quot;InvalidJson: JSON_TYPE_ERROR : Field \&quot;time_to_live\&quot; must be a JSON java.lang.Number: abc&quot;
- }
- &lt;/gcm&gt;
-&lt;/message&gt;
-</pre>
-
-<p>Device Message Rate Exceeded:</p>
-
-<pre>&lt;message id=&quot;...&quot;&gt;
-  &lt;gcm xmlns=&quot;google:mobile:data&quot;&gt;
-  {
-    &quot;message_type&quot;:&quot;nack&quot;,
-    &quot;message_id&quot;:&quot;msgId1&quot;,
-    &quot;from&quot;:&quot;REGID&quot;,
-    &quot;error&quot;:&quot;DEVICE_MESSAGE_RATE_EXCEEDED&quot;,
-    &quot;error_description&quot;:&quot;Downstream message rate exceeded for this registration id&quot;
-  }
-  &lt;/gcm&gt;
-&lt;/message&gt;
-</pre>
-
-<p>See the <a href="server-ref.html#table11">Server Reference</a> for a complete list of the
-NACK error codes. Unless otherwise
-indicated, a NACKed message should not be retried. Unexpected NACK error codes
-should be treated the same as {@code INTERNAL_SERVER_ERROR}.</p>
-
-<h4 id="stanza">Stanza error</h4>
-
-<p>You can also get a stanza error in certain cases.
-A stanza error contains:</p>
-<ul>
-<li>Stanza error code.</li>
-<li>Stanza error description (free text).</li>
-</ul>
-<p>For example:</p>
-
-<pre>&lt;message id=&quot;3&quot; type=&quot;error&quot; to=&quot;123456789@gcm.googleapis.com/ABC&quot;&gt;
-  &lt;gcm xmlns=&quot;google:mobile:data&quot;&gt;
-     {&quot;random&quot;: &quot;text&quot;}
-  &lt;/gcm&gt;
-  &lt;error code=&quot;400&quot; type=&quot;modify&quot;&gt;
-    &lt;bad-request xmlns=&quot;urn:ietf:params:xml:ns:xmpp-stanzas&quot;/&gt;
-    &lt;text xmlns=&quot;urn:ietf:params:xml:ns:xmpp-stanzas&quot;&gt;
-      InvalidJson: JSON_PARSING_ERROR : Missing Required Field: message_id\n
-    &lt;/text&gt;
-  &lt;/error&gt;
-&lt;/message&gt;
-</pre>
-
-<h4 id="control">Control messages</h4>
-
-<p>Periodically, CCS needs to close down a connection to perform load balancing. Before it
-closes the connection, CCS sends a {@code CONNECTION_DRAINING} message to indicate that the connection is being drained
-and will be closed soon. "Draining" refers to shutting off the flow of messages coming into a
-connection, but allowing whatever is already in the pipeline to continue. When you receive
-a {@code CONNECTION_DRAINING} message, you should immediately begin sending messages to another CCS
-connection, opening a new connection if necessary. You should, however, keep the original
-connection open and continue receiving messages that may come over the connection (and
-ACKing them)&mdash;CCS handles initiating a connection close when it is ready.</p>
-
-<p>The {@code CONNECTION_DRAINING} message looks like this:</p>
-<pre>&lt;message&gt;
-  &lt;data:gcm xmlns:data=&quot;google:mobile:data&quot;&gt;
-  {
-    &quot;message_type&quot;:&quot;control&quot;
-    &quot;control_type&quot;:&quot;CONNECTION_DRAINING&quot;
-  }
-  &lt;/data:gcm&gt;
-&lt;/message&gt;</pre>
-
-<p>{@code CONNECTION_DRAINING} is currently the only {@code control_type} supported.</p>
-
-<!--Delivery receipts section-->
-
-<h3 id="receipts">Receive delivery receipts</h3>
-
-<p>You can get delivery receipts (sent from CCS to
-your 3rd party app server) when
-a device confirms that it received a message sent by CCS.</p>
-
-<p>To enable this feature, the message your 3rd-party app server sends to CCS must include
-a field called <code>&quot;delivery_receipt_requested&quot;</code>. When this field is set to
-<code>true</code>, CCS sends a delivery receipt when a device confirms that it received a particular message.</p>
-
-<p>Here is an XMPP stanza containing a JSON
-message with <code>&quot;delivery_receipt_requested&quot;</code> set to <code>true</code>:</p>
-
-<pre>&lt;message id=&quot;&quot;&gt;
-  &lt;gcm xmlns=&quot;google:mobile:data&quot;&gt;
-  {
-      &quot;to&quot;:&quot;REGISTRATION_ID&quot;,
-      &quot;message_id&quot;:&quot;m-1366082849205&quot;
-      &quot;data&quot;:
-      {
-          &quot;hello&quot;:&quot;world&quot;,
-      }
-      &quot;time_to_live&quot;:&quot;600&quot;,
-      &quot;delay_while_idle&quot;: true,
-      <strong>&quot;delivery_receipt_requested&quot;: true</strong>
-  }
-  &lt;/gcm&gt;
-&lt;/message&gt;
-</pre>
-
-
-
-<p>Here is an example of the delivery receipt that CCS sends to tell your 3rd-party
-app server that a device received a message that CCS sent it:</p>
-
-</p>
-<pre>&lt;message id=&quot;&quot;&gt;
-  &lt;gcm xmlns=&quot;google:mobile:data&quot;&gt;
-  {
-      &quot;category&quot;:&quot;com.example.yourapp&quot;, // to know which app sent it
-      &quot;data&quot;:
-      {
-         &#x201c;message_status&quot;:&quot;MESSAGE_SENT_TO_DEVICE&quot;,
-         &#x201c;original_message_id&#x201d;:&#x201d;m-1366082849205&#x201d;
-         &#x201c;device_registration_id&#x201d;: &#x201c;REGISTRATION_ID&#x201d;
-      },
-      &quot;message_id&quot;:&quot;dr2:m-1366082849205&quot;,
-      &quot;message_type&quot;:&quot;receipt&quot;,
-      &quot;from&quot;:&quot;gcm.googleapis.com&quot;
-  }
-  &lt;/gcm&gt;
-&lt;/message&gt;</pre>
-
-<p>Note the following:</p>
-
-<ul>
-  <li>The {@code &quot;message_type&quot;} is set to {@code &quot;receipt&quot;}.
-  <li>The {@code &quot;message_status&quot;} is set to {@code &quot;MESSAGE_SENT_TO_DEVICE&quot;},
-  indicating that the device received the message. Notice that in this case,
-{@code &quot;message_status&quot;} is not a field but rather part of the data payload.</li>
-  <li>The receipt message ID consists of the original message ID, but with a
-<code>dr2:</code> prefix. Your 3rd-party app server must send an ACK back with this ID,
-which in this example is {@code dr2:m-1366082849205}.</li>
-  <li>The original message ID, the device registration ID, and the status are inside the
-{@code &quot;data&quot;} field.</li>
-<li>If the connection between CCS and the device is poor, GCM may send multiple, duplicate delivery
- receipts. You can safely ignore such duplicates.</li>
-</ul>
-
-<h2 id="upstream">Upstream Messages</h2>
-
-<p>Using CCS and the
-<a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">
-{@code GoogleCloudMessaging}</a>
-API, you can send messages from a user's device to the cloud.</p>
-
-<p>Here is how you send an upstream message using the
-<a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">
-{@code GoogleCloudMessaging}</a>
-API. For a complete example, see <a href="client.html">Implementing GCM Client</a>:</p>
-
-<pre>GoogleCloudMessaging gcm = GoogleCloudMessaging.get(context);
-String GCM_SENDER_ID = "Your-Sender-ID";
-AtomicInteger msgId = new AtomicInteger();
-String id = Integer.toString(msgId.incrementAndGet());
-Bundle data = new Bundle();
-// Bundle data consists of a key-value pair
-data.putString("hello", "world");
-// "time to live" parameter
-// This is optional. It specifies a value in seconds up to 24 hours.
-int ttl = [0 seconds, 24 hours]
-
-gcm.send(GCM_SENDER_ID + "&#64;gcm.googleapis.com", id, ttl, data);
-</pre>
-
-<p>This call generates the necessary XMPP stanza for sending the upstream message.
-The message goes from the app on the device to CCS to the 3rd-party app server.
-The stanza has the following format:</p>
-
-<pre>&lt;message id=&quot;&quot;&gt;
-  &lt;gcm xmlns=&quot;google:mobile:data&quot;&gt;
-  {
-      &quot;category&quot;:&quot;com.example.yourapp&quot;, // to know which app sent it
-      &quot;data&quot;:
-      {
-          &quot;hello&quot;:&quot;world&quot;,
-      },
-      &quot;message_id&quot;:&quot;m-123&quot;,
-      &quot;from&quot;:&quot;REGID&quot;
-  }
-  &lt;/gcm&gt;
-&lt;/message&gt;</pre>
-
-<p>Here is the format of the ACK expected by CCS from 3rd-party app servers in
-response to the above message:</p>
-
-<pre>&lt;message id=&quot;&quot;&gt;
-  &lt;gcm xmlns=&quot;google:mobile:data&quot;&gt;
-  {
-      &quot;to&quot;:&quot;REGID&quot;,
-      &quot;message_id&quot;:&quot;m-123&quot;
-      &quot;message_type&quot;:&quot;ack&quot;
-  }
-  &lt;/gcm&gt;
-&lt;/message&gt;</pre>
-
-
-<h2 id="flow">Flow Control</h2>
-
-<p>Every message sent to CCS receives either an ACK or a NACK response. Messages
-that haven't received one of these responses are considered pending. If the pending
-message count reaches 100, the 3rd-party app server should stop sending new messages
-and wait for CCS to acknowledge some of the existing pending messages as illustrated in
-figure 1:</p>
-
-<img src="{@docRoot}images/gcm/CCS-ack.png">
-
-<p class="img-caption">
-  <strong>Figure 1.</strong> Message/ack flow.
-</p>
-
-<p>Conversely, to avoid overloading the 3rd-party app server, CCS stops sending
-if there are too many unacknowledged messages. Therefore, the 3rd-party app server
-should "ACK" upstream messages, received from the client application via CCS, as soon as possible
-to maintain a constant flow of incoming messages. The aforementioned pending message limit doesn't
-apply to these ACKs. Even if the pending message count reaches 100, the 3rd-party app server
-should continue sending ACKs for messages received from CCS to avoid blocking delivery of new
-upstream messages.</p>
-
-<p>ACKs are only valid within the context of one connection. If the connection is
-closed before a message can be ACKed, the 3rd-party app server should wait for CCS
-to resend the upstream message before ACKing it again. Similarly, all pending messages for which an
-ACK/NACK was not received from CCS before the connection was closed should be sent again.
-</p>
-
-<h2 id="implement">Implementing an XMPP-based App Server</h2>
-
-<p>This section gives examples of implementing an app server that works with CCS.
-Note that a full GCM implementation requires a client-side implementation, in
-addition to the server. For more information, see <a href="client.html">
-Implementing GCM Client</a>.</a>
-
-<h3 id="smack">Java sample using the Smack library</h3>
-
-<p>Here is a sample app server written in Java, using the
-<a href="http://www.igniterealtime.org/projects/smack/">Smack</a> library.</p>
-
-<pre>import org.jivesoftware.smack.ConnectionConfiguration;
-import org.jivesoftware.smack.ConnectionConfiguration.SecurityMode;
-import org.jivesoftware.smack.ConnectionListener;
-import org.jivesoftware.smack.PacketInterceptor;
-import org.jivesoftware.smack.PacketListener;
-import org.jivesoftware.smack.SmackException;
-import org.jivesoftware.smack.SmackException.NotConnectedException;
-import org.jivesoftware.smack.XMPPConnection;
-import org.jivesoftware.smack.XMPPException;
-import org.jivesoftware.smack.filter.PacketTypeFilter;
-import org.jivesoftware.smack.packet.DefaultPacketExtension;
-import org.jivesoftware.smack.packet.Message;
-import org.jivesoftware.smack.packet.Packet;
-import org.jivesoftware.smack.packet.PacketExtension;
-import org.jivesoftware.smack.provider.PacketExtensionProvider;
-import org.jivesoftware.smack.provider.ProviderManager;
-import org.jivesoftware.smack.tcp.XMPPTCPConnection;
-import org.jivesoftware.smack.util.StringUtils;
-import org.json.simple.JSONValue;
-import org.json.simple.parser.ParseException;
-import org.xmlpull.v1.XmlPullParser;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.net.ssl.SSLSocketFactory;
-
-/**
- * Sample Smack implementation of a client for GCM Cloud Connection Server. This
- * code can be run as a standalone CCS client.
- *
- * &lt;p&gt;For illustration purposes only.
- */
-public class SmackCcsClient {
-
-    private static final Logger logger = Logger.getLogger(&quot;SmackCcsClient&quot;);
-
-    private static final String GCM_SERVER = &quot;gcm.googleapis.com&quot;;
-    private static final int GCM_PORT = 5235;
-
-    private static final String GCM_ELEMENT_NAME = &quot;gcm&quot;;
-    private static final String GCM_NAMESPACE = &quot;google:mobile:data&quot;;
-
-    static {
-
-        ProviderManager.addExtensionProvider(GCM_ELEMENT_NAME, GCM_NAMESPACE,
-            new PacketExtensionProvider() {
-                &#64;Override
-                public PacketExtension parseExtension(XmlPullParser parser) throws
-                        Exception {
-                    String json = parser.nextText();
-                    return new GcmPacketExtension(json);
-                }
-            });
-    }
-
-    private XMPPConnection connection;
-
-    /**
-     * Indicates whether the connection is in draining state, which means that it
-     * will not accept any new downstream messages.
-     */
-    protected volatile boolean connectionDraining = false;
-
-    /**
-     * Sends a downstream message to GCM.
-     *
-     * &#64;return true if the message has been successfully sent.
-     */
-    public boolean sendDownstreamMessage(String jsonRequest) throws
-            NotConnectedException {
-        if (!connectionDraining) {
-            send(jsonRequest);
-            return true;
-        }
-        logger.info(&quot;Dropping downstream message since the connection is draining&quot;);
-        return false;
-    }
-
-    /**
-     * Returns a random message id to uniquely identify a message.
-     *
-     * &lt;p&gt;Note: This is generated by a pseudo random number generator for
-     * illustration purpose, and is not guaranteed to be unique.
-     */
-    public String nextMessageId() {
-        return &quot;m-&quot; + UUID.randomUUID().toString();
-    }
-
-    /**
-     * Sends a packet with contents provided.
-     */
-    protected void send(String jsonRequest) throws NotConnectedException {
-        Packet request = new GcmPacketExtension(jsonRequest).toPacket();
-        connection.sendPacket(request);
-    }
-
-    /**
-     * Handles an upstream data message from a device application.
-     *
-     * &lt;p&gt;This sample echo server sends an echo message back to the device.
-     * Subclasses should override this method to properly process upstream messages.
-     */
-    protected void handleUpstreamMessage(Map&lt;String, Object&gt; jsonObject) {
-        // PackageName of the application that sent this message.
-        String category = (String) jsonObject.get(&quot;category&quot;);
-        String from = (String) jsonObject.get(&quot;from&quot;);
-        &#64;SuppressWarnings(&quot;unchecked&quot;)
-        Map&lt;String, String&gt; payload = (Map&lt;String, String&gt;) jsonObject.get(&quot;data&quot;);
-        payload.put(&quot;ECHO&quot;, &quot;Application: &quot; + category);
-
-        // Send an ECHO response back
-        String echo = createJsonMessage(from, nextMessageId(), payload,
-                &quot;echo:CollapseKey&quot;, null, false);
-
-        try {
-            sendDownstreamMessage(echo);
-        } catch (NotConnectedException e) {
-            logger.log(Level.WARNING, &quot;Not connected anymore, echo message is
-                    not sent&quot;, e);
-        }
-    }
-
-    /**
-     * Handles an ACK.
-     *
-     * &lt;p&gt;Logs a {@code INFO} message, but subclasses could override it to
-     * properly handle ACKs.
-     */
-    protected void handleAckReceipt(Map&lt;String, Object&gt; jsonObject) {
-        String messageId = (String) jsonObject.get(&quot;message_id&quot;);
-        String from = (String) jsonObject.get(&quot;from&quot;);
-        logger.log(Level.INFO, &quot;handleAckReceipt() from: &quot; + from + &quot;,
-                messageId: &quot; + messageId);
-    }
-
-    /**
-     * Handles a NACK.
-     *
-     * &lt;p&gt;Logs a {@code INFO} message, but subclasses could override it to
-     * properly handle NACKs.
-     */
-    protected void handleNackReceipt(Map&lt;String, Object&gt; jsonObject) {
-        String messageId = (String) jsonObject.get(&quot;message_id&quot;);
-        String from = (String) jsonObject.get(&quot;from&quot;);
-        logger.log(Level.INFO, &quot;handleNackReceipt() from: &quot; + from + &quot;,
-                messageId: &quot; + messageId);
-    }
-
-    protected void handleControlMessage(Map&lt;String, Object&gt; jsonObject) {
-        logger.log(Level.INFO, &quot;handleControlMessage(): &quot; + jsonObject);
-        String controlType = (String) jsonObject.get(&quot;control_type&quot;);
-        if (&quot;CONNECTION_DRAINING&quot;.equals(controlType)) {
-            connectionDraining = true;
-        } else {
-            logger.log(Level.INFO, &quot;Unrecognized control type: %s. This could
-                    happen if new features are &quot; + &quot;added to the CCS protocol.&quot;,
-                    controlType);
-        }
-    }
-
-    /**
-     * Creates a JSON encoded GCM message.
-     *
-     * &#64;param to RegistrationId of the target device (Required).
-     * &#64;param messageId Unique messageId for which CCS sends an
-     *         &quot;ack/nack&quot; (Required).
-     * &#64;param payload Message content intended for the application. (Optional).
-     * &#64;param collapseKey GCM collapse_key parameter (Optional).
-     * &#64;param timeToLive GCM time_to_live parameter (Optional).
-     * &#64;param delayWhileIdle GCM delay_while_idle parameter (Optional).
-     * &#64;return JSON encoded GCM message.
-     */
-    public static String createJsonMessage(String to, String messageId,
-            Map&lt;String, String&gt; payload, String collapseKey, Long timeToLive,
-            Boolean delayWhileIdle) {
-        Map&lt;String, Object&gt; message = new HashMap&lt;String, Object&gt;();
-        message.put(&quot;to&quot;, to);
-        if (collapseKey != null) {
-            message.put(&quot;collapse_key&quot;, collapseKey);
-        }
-        if (timeToLive != null) {
-            message.put(&quot;time_to_live&quot;, timeToLive);
-        }
-        if (delayWhileIdle != null &amp;&amp; delayWhileIdle) {
-            message.put(&quot;delay_while_idle&quot;, true);
-        }
-      message.put(&quot;message_id&quot;, messageId);
-      message.put(&quot;data&quot;, payload);
-      return JSONValue.toJSONString(message);
-    }
-
-    /**
-     * Creates a JSON encoded ACK message for an upstream message received
-     * from an application.
-     *
-     * &#64;param to RegistrationId of the device who sent the upstream message.
-     * &#64;param messageId messageId of the upstream message to be acknowledged to CCS.
-     * &#64;return JSON encoded ack.
-     */
-        protected static String createJsonAck(String to, String messageId) {
-        Map&lt;String, Object&gt; message = new HashMap&lt;String, Object&gt;();
-        message.put(&quot;message_type&quot;, &quot;ack&quot;);
-        message.put(&quot;to&quot;, to);
-        message.put(&quot;message_id&quot;, messageId);
-        return JSONValue.toJSONString(message);
-    }
-
-    /**
-     * Connects to GCM Cloud Connection Server using the supplied credentials.
-     *
-     * &#64;param senderId Your GCM project number
-     * &#64;param apiKey API Key of your project
-     */
-    public void connect(long senderId, String apiKey)
-            throws XMPPException, IOException, SmackException {
-        ConnectionConfiguration config =
-                new ConnectionConfiguration(GCM_SERVER, GCM_PORT);
-        config.setSecurityMode(SecurityMode.enabled);
-        config.setReconnectionAllowed(true);
-        config.setRosterLoadedAtLogin(false);
-        config.setSendPresence(false);
-        config.setSocketFactory(SSLSocketFactory.getDefault());
-
-        connection = new XMPPTCPConnection(config);
-        connection.connect();
-
-        connection.addConnectionListener(new LoggingConnectionListener());
-
-        // Handle incoming packets
-        connection.addPacketListener(new PacketListener() {
-
-            &#64;Override
-            public void processPacket(Packet packet) {
-                logger.log(Level.INFO, &quot;Received: &quot; + packet.toXML());
-                Message incomingMessage = (Message) packet;
-                GcmPacketExtension gcmPacket =
-                        (GcmPacketExtension) incomingMessage.
-                        getExtension(GCM_NAMESPACE);
-                String json = gcmPacket.getJson();
-                try {
-                    &#64;SuppressWarnings(&quot;unchecked&quot;)
-                    Map&lt;String, Object&gt; jsonObject =
-                            (Map&lt;String, Object&gt;) JSONValue.
-                            parseWithException(json);
-
-                    // present for &quot;ack&quot;/&quot;nack&quot;, null otherwise
-                    Object messageType = jsonObject.get(&quot;message_type&quot;);
-
-                    if (messageType == null) {
-                        // Normal upstream data message
-                        handleUpstreamMessage(jsonObject);
-
-                        // Send ACK to CCS
-                        String messageId = (String) jsonObject.get(&quot;message_id&quot;);
-                        String from = (String) jsonObject.get(&quot;from&quot;);
-                        String ack = createJsonAck(from, messageId);
-                        send(ack);
-                    } else if (&quot;ack&quot;.equals(messageType.toString())) {
-                          // Process Ack
-                          handleAckReceipt(jsonObject);
-                    } else if (&quot;nack&quot;.equals(messageType.toString())) {
-                          // Process Nack
-                          handleNackReceipt(jsonObject);
-                    } else if (&quot;control&quot;.equals(messageType.toString())) {
-                          // Process control message
-                          handleControlMessage(jsonObject);
-                    } else {
-                          logger.log(Level.WARNING,
-                                  &quot;Unrecognized message type (%s)&quot;,
-                                  messageType.toString());
-                    }
-                } catch (ParseException e) {
-                    logger.log(Level.SEVERE, &quot;Error parsing JSON &quot; + json, e);
-                } catch (Exception e) {
-                    logger.log(Level.SEVERE, &quot;Failed to process packet&quot;, e);
-                }
-            }
-        }, new PacketTypeFilter(Message.class));
-
-        // Log all outgoing packets
-        connection.addPacketInterceptor(new PacketInterceptor() {
-            &#64;Override
-                public void interceptPacket(Packet packet) {
-                    logger.log(Level.INFO, &quot;Sent: {0}&quot;, packet.toXML());
-                }
-            }, new PacketTypeFilter(Message.class));
-
-        connection.login(senderId + &quot;&#64;gcm.googleapis.com&quot;, apiKey);
-    }
-
-    public static void main(String[] args) throws Exception {
-        final long senderId = 1234567890L; // your GCM sender id
-        final String password = &quot;Your API key&quot;;
-
-        SmackCcsClient ccsClient = new SmackCcsClient();
-
-        ccsClient.connect(senderId, password);
-
-        // Send a sample hello downstream message to a device.
-        String toRegId = &quot;RegistrationIdOfTheTargetDevice&quot;;
-        String messageId = ccsClient.nextMessageId();
-        Map&lt;String, String&gt; payload = new HashMap&lt;String, String&gt;();
-        payload.put(&quot;Hello&quot;, &quot;World&quot;);
-        payload.put(&quot;CCS&quot;, &quot;Dummy Message&quot;);
-        payload.put(&quot;EmbeddedMessageId&quot;, messageId);
-        String collapseKey = &quot;sample&quot;;
-        Long timeToLive = 10000L;
-        String message = createJsonMessage(toRegId, messageId, payload,
-                collapseKey, timeToLive, true);
-
-        ccsClient.sendDownstreamMessage(message);
-    }
-
-    /**
-     * XMPP Packet Extension for GCM Cloud Connection Server.
-     */
-    private static final class GcmPacketExtension extends DefaultPacketExtension {
-
-        private final String json;
-
-        public GcmPacketExtension(String json) {
-            super(GCM_ELEMENT_NAME, GCM_NAMESPACE);
-            this.json = json;
-        }
-
-        public String getJson() {
-            return json;
-        }
-
-        &#64;Override
-        public String toXML() {
-            return String.format(&quot;&lt;%s xmlns=\&quot;%s\&quot;&gt;%s&lt;/%s&gt;&quot;,
-                    GCM_ELEMENT_NAME, GCM_NAMESPACE,
-                    StringUtils.escapeForXML(json), GCM_ELEMENT_NAME);
-        }
-
-        public Packet toPacket() {
-            Message message = new Message();
-            message.addExtension(this);
-            return message;
-        }
-    }
-
-    private static final class LoggingConnectionListener
-            implements ConnectionListener {
-
-        &#64;Override
-        public void connected(XMPPConnection xmppConnection) {
-            logger.info(&quot;Connected.&quot;);
-        }
-
-        &#64;Override
-        public void authenticated(XMPPConnection xmppConnection) {
-            logger.info(&quot;Authenticated.&quot;);
-        }
-
-        &#64;Override
-        public void reconnectionSuccessful() {
-            logger.info(&quot;Reconnecting..&quot;);
-        }
-
-        &#64;Override
-        public void reconnectionFailed(Exception e) {
-            logger.log(Level.INFO, &quot;Reconnection failed.. &quot;, e);
-        }
-
-        &#64;Override
-        public void reconnectingIn(int seconds) {
-            logger.log(Level.INFO, &quot;Reconnecting in %d secs&quot;, seconds);
-        }
-
-        &#64;Override
-        public void connectionClosedOnError(Exception e) {
-            logger.info(&quot;Connection closed on error.&quot;);
-        }
-
-        &#64;Override
-        public void connectionClosed() {
-            logger.info(&quot;Connection closed.&quot;);
-        }
-    }
-}</pre>
-
-<h3 id="python">Python sample</h3>
-
-<p>Here is an example of a CCS app server written in Python. This sample echo
-server sends an initial message, and for every upstream message received, it sends
-a dummy response back to the application that sent the upstream message. This
-example illustrates how to connect, send, and receive GCM messages using XMPP. It
-shouldn't be used as-is on a production deployment.</p>
-
-<pre>
-#!/usr/bin/python
-import sys, json, xmpp, random, string
-
-SERVER = 'gcm.googleapis.com'
-PORT = 5235
-USERNAME = "Your GCM Sender Id"
-PASSWORD = "API Key"
-REGISTRATION_ID = "Registration Id of the target device"
-
-unacked_messages_quota = 100
-send_queue = []
-
-# Return a random alphanumerical id
-def random_id():
-  rid = ''
-  for x in range(8): rid += random.choice(string.ascii_letters + string.digits)
-  return rid
-
-def message_callback(session, message):
-  global unacked_messages_quota
-  gcm = message.getTags('gcm')
-  if gcm:
-    gcm_json = gcm[0].getData()
-    msg = json.loads(gcm_json)
-    if not msg.has_key('message_type'):
-      # Acknowledge the incoming message immediately.
-      send({'to': msg['from'],
-            'message_type': 'ack',
-            'message_id': msg['message_id']})
-      # Queue a response back to the server.
-      if msg.has_key('from'):
-        # Send a dummy echo response back to the app that sent the upstream message.
-        send_queue.append({'to': msg['from'],
-                           'message_id': random_id(),
-                           'data': {'pong': 1}})
-    elif msg['message_type'] == 'ack' or msg['message_type'] == 'nack':
-      unacked_messages_quota += 1
-
-def send(json_dict):
-  template = (&quot;&lt;message&gt;&lt;gcm xmlns='google:mobile:data'&gt;{1}&lt;/gcm&gt;&lt;/message&gt;&quot;)
-  client.send(xmpp.protocol.Message(
-      node=template.format(client.Bind.bound[0], json.dumps(json_dict))))
-
-def flush_queued_messages():
-  global unacked_messages_quota
-  while len(send_queue) and unacked_messages_quota &gt; 0:
-    send(send_queue.pop(0))
-    unacked_messages_quota -= 1
-
-client = xmpp.Client('gcm.googleapis.com', debug=['socket'])
-client.connect(server=(SERVER,PORT), secure=1, use_srv=False)
-auth = client.auth(USERNAME, PASSWORD)
-if not auth:
-  print 'Authentication failed!'
-  sys.exit(1)
-
-client.RegisterHandler('message', message_callback)
-
-send_queue.append({'to': REGISTRATION_ID,
-                   'message_id': 'reg_id',
-                   'data': {'message_destination': 'RegId',
-                            'message_id': random_id()}})
-
-while True:
-  client.Process(1)
-  flush_queued_messages()</pre>
diff --git a/docs/html/google/gcm/client.jd b/docs/html/google/gcm/client.jd
deleted file mode 100644
index 9cb3f84..0000000
--- a/docs/html/google/gcm/client.jd
+++ /dev/null
@@ -1,689 +0,0 @@
-page.title=Implementing GCM Client on Android
-page.tags=cloud,push,messaging
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-
-<h2>In this document</h2>
-
-<ol class="toc">
-<li><a href="#play-services">Set Up Google Play Services</a></li>
-<li><a href="#manifest">Edit Your Application's Manifest</a></li>
-<li><a href="#app">Write Your Application</a>
-  <ol class="toc">
-    <li><a href="#sample-play">Check for Google Play Services APK</a></li>
-    <li><a href="#sample-register">Register for GCM</a></li>
-    <li><a href="#sample-receive">Receive a downstream message</a></li>
-    <li><a href="#sample-send">Send an upstream message</a></li>
-  </ol>
-  <li><a href="#run">Running the Sample</a></li>
-  <li><a href="#stats">Viewing Statistics</a></li>
-</li>
-
-</ol>
-
-<h2>See Also</h2>
-
-<ol class="toc">
-<li><a href="gs.html">Getting Started</a></li>
-<li><a href="server.html">Implementing GCM Server</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>A Google Cloud Messaging (GCM) Android client is a GCM-enabled app that runs on an
-Android device. To write your client code, we recommend that you use the
-<a href="{@docRoot}reference/com/google/android/gms/gcm/package-summary.html">
-{@code GoogleCloudMessaging}</a> API.</p>
-
-<p>Here are the requirements for running a GCM Android client:</p>
-
-<ul>
-  <li>At a bare minimum, GCM requires devices running Android 2.2 or higher that also have the
-Google Play Store application installed, or an emulator running Android 2.2
-with Google APIs. Note that you are not limited to deploying your
-Android applications through Google Play Store.</li>
-  <li>However, if you want to continue to use new GCM features that are distributed
-through Google Play Services, the device must be running Android 2.3 or higher, or
-you can use an emulator running Android 2.3 with Google APIs.</li>
-<li>On Android devices, GCM uses an existing connection for Google services. For
-pre-3.0 devices, this requires users to set up their Google accounts on their mobile
-devices. A Google account is not a requirement on devices running Android 4.0.4 or higher.</li>
-
-</ul>
-
-<p>A full GCM implementation requires both a client implementation and a server
-implementation. For more
-information about implementing the server side, see <a href="server.html">
-Implementing GCM Server</a>.</p>
-
-<p>The following sections walk you through the steps involved in writing a GCM
-client-side application. Your client app can be arbitrarily complex, but at bare
-minimum, a GCM client app must include code to register (and thereby get a
-registration ID), and a broadcast receiver to receive messages sent by GCM.
-</p>
-
-<h2 id="play-services">Step 1: Set Up Google Play Services</h2>
-
-<p>To write your client application, use the
-<a href="{@docRoot}reference/com/google/android/gms/gcm/package-summary.html">
-{@code GoogleCloudMessaging}</a> API.
-To use this API, you must set up your project to use the Google Play services SDK,
-as described in <a href="/google/play-services/setup.html">Setup Google Play
-Services SDK</a>.</p>
-
-<p class="note"><strong>Caution:</strong> When you add the Play Services library to
-your project, be sure to add it <em>with resources</em>, as described in
-<a href="{@docRoot}google/play-services/setup.html#Setup">
-Setup Google Play Services SDK</a>. The key point is that you must
-<em>reference</em> the library&mdash;simply adding a {@code .jar} file to
-your Eclipse project will not work. You must follow the directions
-for referencing a library, or your app won't be able to access
-the library's resources, and it won't run properly.
-If you're using Android Studio, this is the string to add to the
-{@code dependency} section of your application's {@code build.gradle} file:</p>
-
-<pre>dependencies {
-  compile "com.google.android.gms:play-services:3.1.+"
-}
-</pre>
-
-
-<h2 id="manifest">Step 2: Edit Your Application's Manifest</h2>
-
-<p>Add the following to your application's manifest:</p>
-<ul>
-  <li>The <code>com.google.android.c2dm.permission.RECEIVE</code> permission so
-the Android application can register and receive messages.</li>
-  <li>The <code>android.permission.INTERNET</code> permission so the Android
-application can send the registration ID to the 3rd party server.</li>
-  <li>The <code>android.permission.WAKE_LOCK</code> permission so the application
-can keep the processor from sleeping when a message is received. Optional&mdash;use
-only if the app wants to keep the device from sleeping.</li>
-  <li>An <code>applicationPackage + &quot;.permission.C2D_MESSAGE&quot;</code>
-permission to prevent other Android applications from registering and receiving
-the Android application's messages. The permission name must exactly match this
-pattern&mdash;otherwise the Android application will not receive the messages.</li>
-   <li>A receiver for <code>com.google.android.c2dm.intent.RECEIVE</code>, with
-the category set
-as <code>applicationPackage</code>. The receiver should require the
-<code>com.google.android.c2dm.permission.SEND</code> permission, so that only the GCM
-Framework can send a message to it. If your app uses an {@link android.app.IntentService}
-(not required, but a common pattern), this receiver should be an instance of
-{@link android.support.v4.content.WakefulBroadcastReceiver}.
-A {@link android.support.v4.content.WakefulBroadcastReceiver} takes care of
-creating and managing a
-<a href="{@docRoot}reference/android/os/PowerManager.html#PARTIAL_WAKE_LOCK">
-partial wake lock</a> for your app.</li>
-
-<li>A {@link android.app.Service} (typically an {@link android.app.IntentService})
-to which the {@link android.support.v4.content.WakefulBroadcastReceiver} passes off
-the work of handling the GCM message, while ensuring that the device does not
-go back to sleep in the process. Including an {@link android.app.IntentService} is
-optional&mdash;you could choose to process your messages in a regular
-{@link android.content.BroadcastReceiver} instead, but realistically, most apps will
-use a {@link android.app.IntentService}.
-</li>
-  <li>If the GCM feature is critical to the Android application's function, be sure to
-set <code>android:minSdkVersion=&quot;8&quot;</code> or higher in the manifest. This
-ensures that the Android application cannot be installed in an environment in which it
-could not run properly. </li>
-</ul>
-
-<p>Here are excerpts from a sample manifest that supports GCM:</p>
-
-<pre class="prettyprint pretty-xml">
-&lt;manifest package="com.example.gcm" ...&gt;
-
-    &lt;uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17"/&gt;
-    &lt;uses-permission android:name="android.permission.INTERNET" /&gt;
-    &lt;uses-permission android:name="android.permission.GET_ACCOUNTS" /&gt;
-    &lt;uses-permission android:name="android.permission.WAKE_LOCK" /&gt;
-    &lt;uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /&gt;
-
-    &lt;permission android:name="com.example.gcm.permission.C2D_MESSAGE"
-        android:protectionLevel="signature" /&gt;
-    &lt;uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" /&gt;
-
-    &lt;application ...&gt;
-        &lt;receiver
-            android:name=".GcmBroadcastReceiver"
-            android:permission="com.google.android.c2dm.permission.SEND" &gt;
-            &lt;intent-filter&gt;
-                &lt;action android:name="com.google.android.c2dm.intent.RECEIVE" /&gt;
-                &lt;category android:name="com.example.gcm" /&gt;
-            &lt;/intent-filter&gt;
-        &lt;/receiver&gt;
-        &lt;service android:name=".GcmIntentService" /&gt;
-    &lt;/application&gt;
-
-&lt;/manifest&gt;
-</pre>
-
-<h2 id="app"> Step 3: Write Your Application</h2>
-
-<p>Finally, write your application. This section features a sample client
-application that illustrates how to use the
-<a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">
-{@code GoogleCloudMessaging}</a> API. The sample consists of a main activity
-({@code DemoActivity}), a {@link android.support.v4.content.WakefulBroadcastReceiver}
-({@code GcmBroadcastReceiver}), and an {@link android.app.IntentService}
-({@code GcmIntentService}). You can find the complete source code for this sample at the
-<a href="http://code.google.com/p/gcm">open source site</a>.</p>
-
-<p>Note the following:</p>
-
-<ul>
-  <li>Among other things, the sample illustrates registration and upstream
-(device-to-cloud) messaging. Upstream messaging only applies to apps that are running against a
-<a href="ccs.html">CCS</a> (XMPP) server; HTTP-based servers don't support upstream messaging.</li>
-  <li>The <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">
-  {@code GoogleCloudMessaging}</a>
-registration APIs replace the old registration process, which was based on the
-now-obsolete client helper library. While the old registration process still works,
-we encourage you to use the newer
-<a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">
-{@code GoogleCloudMessaging}</a>
-registration APIs, regardless of your underlying server.</li>
-</ul>
-
-<h3 id="sample-play">Check for Google Play Services APK</h3>
-
-<p>As described in <a href="{@docRoot}google/play-services/setup.html">
-Setup Google Play Services SDK</a>, apps that rely on the Play Services SDK
-should always check the device for a compatible Google Play services APK before
-accessing Google Play services features. In the sample app this check is done in
-two places: in the main activity's {@code onCreate()} method, and in its
-{@code onResume()} method. The check in {@code onCreate()} ensures that the app
-can't be used without a successful check. The check in {@code onResume()} ensures
-that if the user returns to the running app through some other means, such as
-through the back button, the check is still performed. If the
-device doesn't have a compatible Google Play services APK, your app can call
-{@code GooglePlayServicesUtil.getErrorDialog()} to allow users to download the
-APK from the Google Play Store or enable it in the device's system settings.
-For example:</p>
-
-<pre>private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
-...
-&#64;Override
-public void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-
-    setContentView(R.layout.main);
-    mDisplay = (TextView) findViewById(R.id.display);
-
-    context = getApplicationContext();
-
-    // Check device for Play Services APK.
-    if (checkPlayServices()) {
-        // If this check succeeds, proceed with normal processing.
-        // Otherwise, prompt user to get valid Play Services APK.
-        ...
-    }
-}
-
-// You need to do the Play Services APK check here too.
-&#64;Override
-protected void onResume() {
-    super.onResume();
-    checkPlayServices();
-}
-
-/**
- * Check the device to make sure it has the Google Play Services APK. If
- * it doesn't, display a dialog that allows users to download the APK from
- * the Google Play Store or enable it in the device's system settings.
- */
-private boolean checkPlayServices() {
-    int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
-    if (resultCode != ConnectionResult.SUCCESS) {
-        if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
-            GooglePlayServicesUtil.getErrorDialog(resultCode, this,
-                    PLAY_SERVICES_RESOLUTION_REQUEST).show();
-        } else {
-            Log.i(TAG, "This device is not supported.");
-            finish();
-        }
-        return false;
-    }
-    return true;
-}</pre>
-
-<h3 id="sample-register">Register for GCM</h3>
-<p>An Android application needs to register with GCM servers before it can receive
-messages. When an app registers, it receives a registration ID, which it can then
-store for future use (note that registration IDs must be kept secret). In the
-following snippet the {@code onCreate()} method in the sample app's
-main activity checks to see if the app is already registered with GCM and with
-the server:</p>
-
-<pre>/**
- * Main UI for the demo app.
- */
-public class DemoActivity extends Activity {
-
-    public static final String EXTRA_MESSAGE = "message";
-    public static final String PROPERTY_REG_ID = "registration_id";
-    private static final String PROPERTY_APP_VERSION = "appVersion";
-    private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
-
-    /**
-     * Substitute you own sender ID here. This is the project number you got
-     * from the API Console, as described in "Getting Started."
-     */
-    String SENDER_ID = "Your-Sender-ID";
-
-    /**
-     * Tag used on log messages.
-     */
-    static final String TAG = "GCMDemo";
-
-    TextView mDisplay;
-    GoogleCloudMessaging gcm;
-    AtomicInteger msgId = new AtomicInteger();
-    SharedPreferences prefs;
-    Context context;
-
-    String regid;
-
-    &#64;Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        setContentView(R.layout.main);
-        mDisplay = (TextView) findViewById(R.id.display);
-
-        context = getApplicationContext();
-
-        // Check device for Play Services APK. If check succeeds, proceed with
-        //  GCM registration.
-        if (checkPlayServices()) {
-            gcm = GoogleCloudMessaging.getInstance(this);
-            regid = getRegistrationId(context);
-
-            if (regid.isEmpty()) {
-                registerInBackground();
-            }
-        } else {
-            Log.i(TAG, "No valid Google Play Services APK found.");
-        }
-    }
-...
-}</pre>
-
-<p>The app calls {@code getRegistrationId()} to see whether there is an existing
-registration ID stored in shared preferences:</p>
-
-<pre>/**
- * Gets the current registration ID for application on GCM service.
- * &lt;p&gt;
- * If result is empty, the app needs to register.
- *
- * &#64;return registration ID, or empty string if there is no existing
- *         registration ID.
- */
-private String getRegistrationId(Context context) {
-    final SharedPreferences prefs = getGCMPreferences(context);
-    String registrationId = prefs.getString(PROPERTY_REG_ID, "");
-    if (registrationId.isEmpty()) {
-        Log.i(TAG, "Registration not found.");
-        return "";
-    }
-    // Check if app was updated; if so, it must clear the registration ID
-    // since the existing registration ID is not guaranteed to work with
-    // the new app version.
-    int registeredVersion = prefs.getInt(PROPERTY_APP_VERSION, Integer.MIN_VALUE);
-    int currentVersion = getAppVersion(context);
-    if (registeredVersion != currentVersion) {
-        Log.i(TAG, "App version changed.");
-        return "";
-    }
-    return registrationId;
-}
-...
-/**
- * &#64;return Application's {&#64;code SharedPreferences}.
- */
-private SharedPreferences getGCMPreferences(Context context) {
-    // This sample app persists the registration ID in shared preferences, but
-    // how you store the registration ID in your app is up to you.
-    return getSharedPreferences(DemoActivity.class.getSimpleName(),
-            Context.MODE_PRIVATE);
-}</pre>
-
-<p>If the registration ID doesn't exist or the app was updated,
-{@code getRegistrationId()} returns an empty string
-to indicate that the app needs to get a new registration ID. {@code getRegistrationId()} calls
-the following method to check the app version:</p>
-
-<pre>/**
- * &#64;return Application's version code from the {&#64;code PackageManager}.
- */
-private static int getAppVersion(Context context) {
-    try {
-        PackageInfo packageInfo = context.getPackageManager()
-                .getPackageInfo(context.getPackageName(), 0);
-        return packageInfo.versionCode;
-    } catch (NameNotFoundException e) {
-        // should never happen
-        throw new RuntimeException("Could not get package name: " + e);
-    }
-}</pre>
-
-
-<p>If there isn't a valid existing registration ID, {@code DemoActivity} calls the
-following {@code registerInBackground()} method to register. Note that because the GCM
-methods {@code register()} and {@code unregister()} are blocking, this has to
-take place on a background thread. This sample uses {@link android.os.AsyncTask}
-to accomplish this:</p>
-
-<pre>
-/**
- * Registers the application with GCM servers asynchronously.
- * &lt;p&gt;
- * Stores the registration ID and app versionCode in the application's
- * shared preferences.
- */
-private void registerInBackground() {
-    new AsyncTask<Void, Void, String>() {
-        &#64;Override
-        protected String doInBackground(Void... params) {
-            String msg = "";
-            try {
-                if (gcm == null) {
-                    gcm = GoogleCloudMessaging.getInstance(context);
-                }
-                regid = gcm.register(SENDER_ID);
-                msg = "Device registered, registration ID=" + regid;
-
-                // You should send the registration ID to your server over HTTP,
-                // so it can use GCM/HTTP or CCS to send messages to your app.
-                // The request to your server should be authenticated if your app
-                // is using accounts.
-                sendRegistrationIdToBackend();
-
-                // For this demo: we don't need to send it because the device
-                // will send upstream messages to a server that echo back the
-                // message using the 'from' address in the message.
-
-                // Persist the registration ID - no need to register again.
-                storeRegistrationId(context, regid);
-            } catch (IOException ex) {
-                msg = "Error :" + ex.getMessage();
-                // If there is an error, don't just keep trying to register.
-                // Require the user to click a button again, or perform
-                // exponential back-off.
-            }
-            return msg;
-        }
-
-        &#64;Override
-        protected void onPostExecute(String msg) {
-            mDisplay.append(msg + "\n");
-        }
-    }.execute(null, null, null);
-    ...
-}</pre>
-
-<p>Once you've received your registration ID, send it to your server:</p>
-<pre>
-/**
- * Sends the registration ID to your server over HTTP, so it can use GCM/HTTP
- * or CCS to send messages to your app. Not needed for this demo since the
- * device sends upstream messages to a server that echoes back the message
- * using the 'from' address in the message.
- */
-private void sendRegistrationIdToBackend() {
-    // Your implementation here.
-}</pre>
-
-<p>After registering, the app calls {@code storeRegistrationId()} to store the
-registration ID in shared preferences for future use. This is just one way of
-persisting a registration ID. You might choose to use a different approach in
-your app:</p>
-
-<pre>/**
- * Stores the registration ID and app versionCode in the application's
- * {&#64;code SharedPreferences}.
- *
- * &#64;param context application's context.
- * &#64;param regId registration ID
- */
-private void storeRegistrationId(Context context, String regId) {
-    final SharedPreferences prefs = getGCMPreferences(context);
-    int appVersion = getAppVersion(context);
-    Log.i(TAG, "Saving regId on app version " + appVersion);
-    SharedPreferences.Editor editor = prefs.edit();
-    editor.putString(PROPERTY_REG_ID, regId);
-    editor.putInt(PROPERTY_APP_VERSION, appVersion);
-    editor.commit();
-}</pre>
-
-<h4 id="reg-errors">Handle registration errors</h4>
-
-<p>As stated above, an Android app must register with GCM servers and get a registration ID
-before it can receive messages. A given registration ID is not guaranteed to last indefinitely,
-so the first thing your app should always do is check to make sure it has a valid
-registration ID (as shown in the code snippets above).</p>
-
-<p>In addition to confirming that it has a valid registration ID, your app should be prepared to handle
-the registration error {@code TOO_MANY_REGISTRATIONS}. This error indicates that the device
-has too many apps registered with GCM. The error only occurs in cases where there are
-extreme numbers of apps, so it should not affect the average user. The remedy is to prompt
-the user to delete some of the other client apps from the device to make
-room for the new one.</p>
-
-<h3 id="sample-receive">Receive a downstream message</h3>
-
-<p>As described above in <a href="#manifest">Step 2</a>, the app includes a
-{@link android.support.v4.content.WakefulBroadcastReceiver} for the <code>com.google.android.c2dm.intent.RECEIVE</code>
-intent. A broadcast receiver is the mechanism GCM uses to deliver messages. </p>
-<p>A {@link android.support.v4.content.WakefulBroadcastReceiver} is a special type of
-broadcast receiver that takes care of
-creating and managing a
-<a href="{@docRoot}reference/android/os/PowerManager.html#PARTIAL_WAKE_LOCK">
-partial wake lock</a> for your app.
-It passes off the work of processing the GCM message to a
-{@link android.app.Service} (typically an
-{@link android.app.IntentService}), while ensuring that the device does not
-go back to sleep in the transition. If you don't hold a wake lock while transitioning
-the work to a service, you are effectively allowing the device to go back to sleep before
-the work completes. The net result is that the app might not finish processing
-the GCM message until some arbitrary point in the future, which is not what you want.</p>
-
-<p class="note"><strong>Note:</strong> Using {@link android.support.v4.content.WakefulBroadcastReceiver}
-is not a requirement. If you have a relatively simple app that doesn't require
-a service, you can intercept the GCM message in a regular {@link android.content.BroadcastReceiver}
-and do your processing there. Once you get the intent that GCM passes into
-your broadcast receiver's {@code onReceive()} method, what you do with it
-is up to you.</p>
-
-<p>This snippet starts {@code GcmIntentService} with the method
-{@link android.support.v4.content.WakefulBroadcastReceiver#startWakefulService startWakefulService()}.
-This method is comparable to {@link android.content.Context#startService startService()}, except that
-the {@link android.support.v4.content.WakefulBroadcastReceiver} is holding a
-wake lock when the service starts. The intent that is passed with
-{@link android.support.v4.content.WakefulBroadcastReceiver#startWakefulService startWakefulService()}
-holds an extra identifying the wake lock:</p>
-
-
-<pre>public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {
-    &#64;Override
-    public void onReceive(Context context, Intent intent) {
-        // Explicitly specify that GcmIntentService will handle the intent.
-        ComponentName comp = new ComponentName(context.getPackageName(),
-                GcmIntentService.class.getName());
-        // Start the service, keeping the device awake while it is launching.
-        startWakefulService(context, (intent.setComponent(comp)));
-        setResultCode(Activity.RESULT_OK);
-    }
-}</pre>
-
-<p>The intent service shown below does the actual work of handling the GCM
-message. When the service is finished, it calls
-{@link android.support.v4.content.WakefulBroadcastReceiver#completeWakefulIntent GcmBroadcastReceiver.completeWakefulIntent()}
-to release the wake lock. The
-{@link android.support.v4.content.WakefulBroadcastReceiver#completeWakefulIntent completeWakefulIntent()}
-method has as its parameter the same intent that was
-passed in from the {@link android.support.v4.content.WakefulBroadcastReceiver}.
-</p>
-
-<p>This snippet processes the GCM message based on message type, and posts the
-result in a notification. But what you do with GCM messages in your app is up to
-you&mdash;the possibilities are endless. For example, the message might be a ping,
-telling the app to sync to a server to retrieve new content, or it might be a
-chat message that you display in the UI.</p>
-
-<pre>
-public class GcmIntentService extends IntentService {
-    public static final int NOTIFICATION_ID = 1;
-    private NotificationManager mNotificationManager;
-    NotificationCompat.Builder builder;
-
-    public GcmIntentService() {
-        super("GcmIntentService");
-    }
-
-    &#64;Override
-    protected void onHandleIntent(Intent intent) {
-        Bundle extras = intent.getExtras();
-        GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
-        // The getMessageType() intent parameter must be the intent you received
-        // in your BroadcastReceiver.
-        String messageType = gcm.getMessageType(intent);
-
-        if (!extras.isEmpty()) {  // has effect of unparcelling Bundle
-            /*
-             * Filter messages based on message type. Since it is likely that GCM
-             * will be extended in the future with new message types, just ignore
-             * any message types you're not interested in, or that you don't
-             * recognize.
-             */
-            if (GoogleCloudMessaging.
-                    MESSAGE_TYPE_SEND_ERROR.equals(messageType)) {
-                sendNotification("Send error: " + extras.toString());
-            } else if (GoogleCloudMessaging.
-                    MESSAGE_TYPE_DELETED.equals(messageType)) {
-                sendNotification("Deleted messages on server: " +
-                        extras.toString());
-            // If it's a regular GCM message, do some work.
-            } else if (GoogleCloudMessaging.
-                    MESSAGE_TYPE_MESSAGE.equals(messageType)) {
-                // This loop represents the service doing some work.
-                for (int i=0; i<5; i++) {
-                    Log.i(TAG, "Working... " + (i+1)
-                            + "/5 @ " + SystemClock.elapsedRealtime());
-                    try {
-                        Thread.sleep(5000);
-                    } catch (InterruptedException e) {
-                    }
-                }
-                Log.i(TAG, "Completed work @ " + SystemClock.elapsedRealtime());
-                // Post notification of received message.
-                sendNotification("Received: " + extras.toString());
-                Log.i(TAG, "Received: " + extras.toString());
-            }
-        }
-        // Release the wake lock provided by the WakefulBroadcastReceiver.
-        GcmBroadcastReceiver.completeWakefulIntent(intent);
-    }
-
-    // Put the message into a notification and post it.
-    // This is just one simple example of what you might choose to do with
-    // a GCM message.
-    private void sendNotification(String msg) {
-        mNotificationManager = (NotificationManager)
-                this.getSystemService(Context.NOTIFICATION_SERVICE);
-
-        PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
-                new Intent(this, DemoActivity.class), 0);
-
-        NotificationCompat.Builder mBuilder =
-                new NotificationCompat.Builder(this)
-        .setSmallIcon(R.drawable.ic_stat_gcm)
-        .setContentTitle("GCM Notification")
-        .setStyle(new NotificationCompat.BigTextStyle()
-        .bigText(msg))
-        .setContentText(msg);
-
-        mBuilder.setContentIntent(contentIntent);
-        mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
-    }
-}</pre>
-
-
-<h3 id="sample-send">Send an upstream message</h3>
-<p>When the user clicks the app's <strong>Send</strong> button, the app sends an
-upstream message using the
-<a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">
-{@code GoogleCloudMessaging}</a> API. In order to receive the upstream message,
-your server should be connected to CCS. You can use one of the demo servers in
-<a href="ccs.html#implement">Implementing an XMPP-based App Server</a> to run the sample and connect
-to CCS.</p>
-
-<pre>public void onClick(final View view) {
-    if (view == findViewById(R.id.send)) {
-        new AsyncTask<Void, Void, String>() {
-            &#64;Override
-            protected String doInBackground(Void... params) {
-                String msg = "";
-                try {
-                    Bundle data = new Bundle();
-                        data.putString("my_message", "Hello World");
-                        data.putString("my_action",
-                                "com.google.android.gcm.demo.app.ECHO_NOW");
-                        String id = Integer.toString(msgId.incrementAndGet());
-                        gcm.send(SENDER_ID + "@gcm.googleapis.com", id, data);
-                        msg = "Sent message";
-                } catch (IOException ex) {
-                    msg = "Error :" + ex.getMessage();
-                }
-                return msg;
-            }
-
-            &#64;Override
-            protected void onPostExecute(String msg) {
-                mDisplay.append(msg + "\n");
-            }
-        }.execute(null, null, null);
-    } else if (view == findViewById(R.id.clear)) {
-        mDisplay.setText("");
-    }
-}</pre>
-
-<h2 id="run">Running the Sample</h2>
-
-<p>To run the sample:</p>
-
-<ol>
-  <li>Follow the instructions in <a href="gs.html">Getting Started</a> to get your sender ID and
-  API key.</li>
-  <li>Implement your client app, as described in this document. You can find the complete source
-  code for the client app at the <a href="http://code.google.com/p/gcm">open source site</a>.</li>
-  <li>Run one of the demo servers (Java or Python) provided in
-<a href="ccs.html#implement">Implementing an XMPP-based App Server</a>. Whichever demo server you
- choose, don't forget to edit its code before running it to supply
-your sender ID and API key.
-</li>
-
-</ol>
-
-<h2 id="stats">Viewing Statistics</h2>
-
-<p>To view  statistics and any error messages for your GCM applications:</p>
-<ol>
-  <li> Go to the <a href="http://play.google.com/apps/publish">Developer Console</a>.</li>
-  <li>Login with your developer account.
-  <p>You will see a page that has a list of all of your apps.</p></li>
-  <li> Click on the &quot;statistics&quot; link next to the app for which you
-want to view GCM stats.
-  <p>Now you are on the statistics page.</p> </li>
-  <li>Go to the drop-down menu and select the GCM metric you want to view.
-  </li>
-</ol>
-<p class="note"><strong>Note:</strong> Stats on the Google API Console are not
-enabled for GCM. You must use the <a href="http://play.google.com/apps/publish">Developer Console</a>.</p>
-
diff --git a/docs/html/google/gcm/demo.jd b/docs/html/google/gcm/demo.jd
deleted file mode 100644
index 012eb9a..0000000
--- a/docs/html/google/gcm/demo.jd
+++ /dev/null
@@ -1,277 +0,0 @@
-page.title=GCM Demo Application
-@jd:body
-
-<div id="deprecatedSticker">
-  <a href="#" 
-     onclick="$('#naMessage').show();$('#deprecatedSticker').hide();return false">
-    <strong>This doc is deprecated</strong></a>
-</div>
-
-
-<div id="naMessage" style="display:block">
-<div><p><strong>The information in this document has been superseded by <a href="server.html">GCM Server</a> and <a href="client.html">GCM Client</a></strong>. Please use the <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">{@code GoogleCloudMessaging}</a> API instead of the GCM client helper library. The GCM server helper library is still valid.</p>
-
- <input style="margin-top:1em;padding:5px" type="button"
-        value="That's nice, but I still want to read this document"
-onclick="$('#naMessage').hide();$('#deprecatedSticker').show()" />
-</div>
-</div>
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Quickview</h2>
-
-<ul>
-<li>Build and run the GCM demo app.</li>
-<li>Understand how to set up both the client and server sides of a GCM app.</li>
-<li>Become familiar with the GCM helper libraries.</li>
-</ul>
-
-
-<h2>In this document</h2>
-
-<ol>
-  <li><a href="#requirements">Requirements</a> </li>
-  <li><a href="#gcm-setup">Setting Up GCM</a></li>
-  <li><a href="#server-setup">Setting Up the Server</a>
-    <ol>
-      <li><a href="#webserver-setup">Using a standard web server</a></li>
-      <li><a href="#appengine-setup">Using App Engine for Java</a></li>
-    </ol>
-  </li>
-  <li><a href="#device-setup">Setting Up the Device</a></li>
-</ol>
-
-</div>
-</div>
-
-<p class="note"><strong>Note:</strong> This tutorial describes how to develop GCM-enabled apps using the helper libraries. This is just one approach. For a more comprehensive discussion of the available APIs and development paths, see <a href="gs.html">Getting Started</a>.
-
-<p>The Google Cloud Messaging (GCM) Demo demonstrates how to use the Google Cloud Messaging framework in your Android application. This tutorial walks you through setting up and running the demo.</p>
-
-
-<p>This demo consists of the following pieces: </p>
-<ul>
-  <li>A web server containing a page where you can send messages.</li>
-  <li>An Android application that receives and displays such messages.</li>
-</ul>
-<p>See the <a href="{@docRoot}reference/com/google/android/gcm/package-summary.html">reference</a> for the client and server helper libraries used in this demo.</p>
-
-<p>The sections below describe how to download the demo code and helper libraries from the SDK Manager. The demo code and helper libraries are also available at the <a href="http://code.google.com/p/gcm">open source site</a>.
-
-<h2 id="requirements">Requirements</h2>
-<p>For the web server:</p>
-<ul>
-  <li> <a href="http://ant.apache.org/">Ant 1.8</a> (it might work with earlier versions, but it's not guaranteed).</li>
-  <li>One of the following:
-    <ul>
-      <li>A running web server compatible with Servlets API version 2.5, such as <a href="http://tomcat.apache.org/">Tomcat 6</a> or <a href="http://jetty.codehaus.org/">Jetty</a>, or</li>
-      <li><a href="http://code.google.com/appengine/">Java App Engine SDK</a> version 1.6 or later.</li>
-    </ul>
-  </li>
-  <li>A Google account registered to use GCM.</li>
-  <li>The API  key for that account.</li>
-</ul>
-<p>For the Android application:</p>
-<ul>
-  <li>Emulator (or device) running Android 2.2 with Google APIs.</li>
-  <li>The Google API project number of the account registered to use GCM.</li>
-</ul>
-<h2 id="gcm-setup">Setting Up GCM</h2>
-<p>Before proceeding with the server and client setup, it's necessary to register a Google account with the Google API Console, enable Google Cloud Messaging in GCM, and obtain an API key from the <a href="https://code.google.com/apis/console">Google API Console</a>.</p>
-<p>For instructions on how to set up GCM, see <a href="gs.html">Getting Started</a>.</p>
-
-
-<h2 id="server-setup">Setting Up the Server</h2>
-<p>This section describes the different options for setting up a server.</p>
-<h3 id="webserver-setup">Using a standard web server</h3>
-<p>To set up the server using a standard, servlet-compliant web server:</p>
-<ol>
-  <li> From the SDK Manager, install <strong>Extras &gt; Google Cloud Messaging for Android Library</strong>.
-    
-    
-    <p>This creates a <code>gcm</code> directory under <code><em>YOUR_SDK_ROOT</em>/extras/google/</code> containing these subdirectories: <code>gcm-client</code>, <code>gcm-server</code>, <code>samples/gcm-demo-client</code>, <code>samples/gcm-demo-server</code>, and <code>samples/gcm-demo-appengine</code>.</p>
-
-<p class="note"><strong>Note:</strong> If you don't see <strong>Extras &gt; Google Cloud Messaging for Android Library</strong> in the SDK Manager, make sure you are running version 20 or higher. Be sure to restart the SDK Manager after updating it.</p>
-  </li>
-
-  <li>In a text editor, edit the <code>samples/gcm-demo-server/WebContent/WEB-INF/classes/api.key</code> and replace the existing text with the API key obtained above.</li>
-  <li>In a shell window, go to the <code>samples/gcm-demo-server</code> directory.</li>
-  <li>Generate the server's WAR file by running <code>ant war</code>:</li>
-  
-  <pre class="prettyprint">$ ant war
-
-Buildfile:build.xml
-
-init:
-   [mkdir] Created dir: build/classes
-   [mkdir] Created dir: dist
-
-compile:
-   [javac] Compiling 6 source files to build/classes
-
-war:
-     [war] Building war: <strong>dist/gcm-demo.war</strong>
-
-BUILD SUCCESSFUL
-Total time: 0 seconds
-</pre>
-  
-  <li>Deploy the <code>dist/gcm-demo.war</code> to your running server. For instance, if you're using Jetty, copy <code>gcm-demo.war</code> to the <code>webapps</code> directory of the Jetty installation.</li>
-  <li>Open the server's main page in a browser. The URL depends on the server you're using and your machine's IP address, but it will be something like <code>http://192.168.1.10:8080/gcm-demo/home</code>, where <code>gcm-demo</code> is the application context and <code>/home</code> is the path of the main servlet.
-    
-  </li>
-</ol>
-<p class="note"><strong>Note:</strong> You can get the IP by running <code>ifconfig</code> on Linux or MacOS, or <code>ipconfig</code> on Windows. </p>
-
-<p> You server is now ready.</p>
-<h3 id="appengine-setup">Using App Engine for Java</h3>
-
-<p>To set up the server using a standard App Engine for Java:</p>
-<ol>
-  <li> From the SDK Manager, install <strong>Extras &gt; Google Cloud Messaging for Android Library</strong>.
-    <p>This creates a <code>gcm</code> directory under <code><em>YOUR_SDK_ROOT</em>/extras/google/</code> containing these subdirectories: <code>gcm-client</code>, <code>gcm-server</code>, <code>samples/gcm-demo-client</code>, <code>samples/gcm-demo-server</code>, and <code>samples/gcm-demo-appengine</code>.</p>
-  </li>
-  <li>In a text editor, edit <code>samples/gcm-demo-appengine/src/com/google/android/gcm/demo/server/ApiKeyInitializer.java</code> and replace the existing text with the API key obtained above.
-  <p class="note"><strong>Note:</strong> The API key value set in that class will be used just once to create a persistent entity on App Engine. If you deploy the application, you can use App Engine's <code>Datastore Viewer</code> to change it later.</p>
-  
-  </li>
-  <li>In a shell window, go to the <code>samples/gcm-demo-appengine</code> directory.</li>
-  <li>Start the development App Engine server by <code>ant runserver</code>, using the <code>-Dsdk.dir</code> to indicate the location of the App Engine SDK and <code>-Dserver.host</code> to set your server's hostname or IP address:</li>
-
-<pre class="prettyprint">
-$ ant -Dsdk.dir=/opt/google/appengine-java-sdk runserver -Dserver.host=192.168.1.10
-Buildfile: gcm-demo-appengine/build.xml
-
-init:
-    [mkdir] Created dir: gcm-demo-appengine/dist
-
-copyjars:
-
-compile:
-
-datanucleusenhance:
-  [enhance] DataNucleus Enhancer (version 1.1.4) : Enhancement of classes
-  [enhance] DataNucleus Enhancer completed with success for 0 classes. Timings : input=28 ms, enhance=0 ms, total=28 ms. Consult the log for full details
-  [enhance] DataNucleus Enhancer completed and no classes were enhanced. Consult the log for full details
-
-runserver:
-     [java] Jun 15, 2012 8:46:06 PM com.google.apphosting.utils.jetty.JettyLogger info
-     [java] INFO: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
-     [java] Jun 15, 2012 8:46:06 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
-     [java] INFO: Successfully processed gcm-demo-appengine/WebContent/WEB-INF/appengine-web.xml
-     [java] Jun 15, 2012 8:46:06 PM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
-     [java] INFO: Successfully processed gcm-demo-appengine/WebContent/WEB-INF/web.xml
-     [java] Jun 15, 2012 8:46:09 PM com.google.android.gcm.demo.server.ApiKeyInitializer contextInitialized
-     [java] SEVERE: Created fake key. Please go to App Engine admin console, change its value to your API Key (the entity type is 'Settings' and its field to be changed is 'ApiKey'), then restart the server!
-     [java] Jun 15, 2012 8:46:09 PM com.google.appengine.tools.development.DevAppServerImpl start
-     [java] INFO: The server is running at http://192.168.1.10:8080/
-     [java] Jun 15, 2012 8:46:09 PM com.google.appengine.tools.development.DevAppServerImpl start
-     [java] INFO: The admin console is running at http://192.168.1.10:8080/_ah/admin
-</pre>
-
-  <li>Open the server's main page in a browser. The URL depends on the server you're using and your machine's IP address, but it will be something like <code>http://192.168.1.10:8080/home</code>, where <code>/home</code> is the path of the main servlet.</li>
-  
-  <p class="note"><strong>Note:</strong> You can get the IP by running <code>ifconfig</code> on Linux or MacOS, or <code>ipconfig</code> on Windows.</p>
-  
-</ol>
-<p> You server is now ready.</p>
-<h2 id="device-setup">Setting Up the Device</h2>
-<p>To set up the device:</p>
-<ol>
-  <li> From the SDK Manager, install <strong>Extras &gt; Google Cloud Messaging for Android Library</strong>.
-    <p>This creates a <code>gcm</code> directory under <code><em>YOUR_SDK_ROOT</em>/extras/google</code> containing these subdirectories: <code>gcm-client</code>, <code>gcm-server</code>, <code>samples/gcm-demo-client</code>, <code>samples/gcm-demo-server</code>, and <code>samples/gcm-demo-appengine</code>.</p>
-  </li>
-  <li>Using a text editor, open  <code>samples/gcm-demo-client/src/com/google/android/gcm/demo/app/CommonUtilities.java</code> and set the proper values for the <code>SENDER_ID</code> and <code>SERVER_URL</code> constants. For example:</li>
-
-<pre class="prettyprint pretty-java">
-static final String SERVER_URL = &quot;http://192.168.1.10:8080/gcm-demo&quot;;
-static final String SENDER_ID = &quot;4815162342&quot;;</pre>
-<p>Note that the <code>SERVER_URL</code> is the URL for the server and the application's context (or just server, if you are using App Engine), and it does not include the forward slash (<code>/</code>). Also note that <code>SENDER_ID</code> is the Google API project number you obtained in the server setup steps above.</p>
-
-  <li>In a shell window, go to the <code>gcm-demo-client</code> directory.</li>
-  <li>Use the SDK's <code>android</code> tool to generate the <code>ant</code> build files:</li>
-
-<pre class="prettyprint">
-$ android update project --name GCMDemo -p . --target android-16
-Updated project.properties
-Updated local.properties
-Updated file ./build.xml
-Updated file ./proguard-project.txt
-</pre>
-<p>If this command fails becase <code>android-16</code> is not recognized, try a different target (as long as it is at least <code>android-15</code>).</p>
-
-<li>Use <code>ant</code> to build the application's APK file:</li>
-
- <pre class="prettyprint">
-$ ant clean debug
-Buildfile: build.xml
-
-...
-
-
--do-debug:
-[zipalign] Running zip align on final apk...
-    [echo] Debug Package: bin/GCMDemo-debug.apk
-[propertyfile] Creating new property file: <strong>bin/build.prop</strong>
-[propertyfile] Updating property file: bin/build.prop
-[propertyfile] Updating property file: bin/build.prop
-[propertyfile] Updating property file: bin/build.prop
-
--post-build:
-
-debug:
-
-BUILD SUCCESSFUL
-Total time: 3 seconds
- </pre>
- 
-<li>Start the Android emulator:</li>
-<pre class="prettyprint">$emulator -avd my_avd
-</pre>
-
-<p> This example assumes there is an AVD (Android Virtual Device) named <code>my_avd</code> previously configured with Android 2.2 and Google APIs level 8. For more information on how to run an Android emulator, see <a href="{@docRoot}tools/devices/index.html">Managing Virtual Devices</a> in the Android Developers Guide.</p>
-
-<li>Make sure there is a Google account added to the emulator. It doesn't have to be any account (like the <code>senderId</code>) in particular. </li>
-
-<p> If the emulator is running Android 4.0.4 or later, this step is optional as GCM does not require an account from this version on.</p>
-
-<li>Install the application in the emulator:</li>
-
-<pre class="prettyprint">
-$ ant installd
-Buildfile: gcm-demo-client/build.xml
-
--set-mode-check:
-
--set-debug-files:
-
-install:
-     [echo] Installing gcm-demo-client/bin/GCMDemo-debug.apk onto default emulator or device...
-     [exec] 1719 KB/s (47158 bytes in 0.026s)
-     [exec]   pkg: /data/local/tmp/GCMDemo-debug.apk
-     [exec] Success
-
-installd:
-
-BUILD SUCCESSFUL
-Total time: 3 seconds
-</pre>
-  <li>In the emulator, launch the GCM Demo app. The initial screen should look like this:</li>
-  <p><img src="{@docRoot}images/gcm/gcm-avd-home-auto-reg.png" class="screenshot" /></p>
-<p class="note"><strong>Note:</strong> What happened? When the device received a registration callback intent from GCM, it contacted the server to register itself, using the register servlet and passing the registration ID received from GCM; the server then saved the registration ID to use it to send messages to the phone.</p>
-<li> Now go back to your browser and refresh the page. It will show that there is one device registered:</li>
-
-<p><img src="{@docRoot}images/gcm/gcm-device-reg.png" class="screenshot" /></p>
-
-<li>Click on <strong>Send Message</strong>. The browser should show:</li>
-<p><img src="{@docRoot}images/gcm/gcm-sent-server.png" class="screenshot" /></p>
-
-<p>And in your emulator:</p>
-
-<p><img src="{@docRoot}images/gcm/gcm-avd-first-msg.png" class="screenshot" /></p>
-
-<p class="note"><strong>Note:</strong> What happened? When you clicked the button, the web server sent a message to GCM addressed to your device (more specifically, to the registration ID returned by GCM during the registration step). The device then received the message and displayed in the main activity; it also issued a system notification so the user would be notified even if the demo application was not running.</p>
-</ol>
-
diff --git a/docs/html/google/gcm/gcm.jd b/docs/html/google/gcm/gcm.jd
deleted file mode 100644
index d4bb45e..0000000
--- a/docs/html/google/gcm/gcm.jd
+++ /dev/null
@@ -1,307 +0,0 @@
-page.title=Overview
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>In this document</h2>
-
-<ol class="toc">
-  <li><a href="#key">Key Concepts</a></li>
-  <li><a href="#arch">Architectural Overview</a></li>
-  <li><a href="#lifecycle">Lifecycle Flow</a></li>
-  <li><a href="#reg">Register to enable GCM</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>Google Cloud Messaging (GCM) is a free service that enables developers
-to send downstream messages (from servers to GCM-enabled client apps), and
-upstream messages (from the GCM-enabled client apps to servers).
-This could be a lightweight message telling the client app
-that there is new data to be fetched from the server (for instance, a "new email"
-notification informing the app that it is out of sync with the back end),
-or it could be a message containing up to 4kb of payload
-data (so apps like instant messaging can consume the message directly). The GCM
-service handles all aspects of queueing of messages and delivery to and from
-the target client app.</p>
-
-
-<h2 id="key">Key Concepts</h2>
-
-<p>This table summarizes the key terms and concepts involved in GCM. It is
-divided into these categories:</p>
-<ul>
-  <li><strong>Components</strong> &mdash; The entities that play a primary role in
-GCM.</li>
-  <li><strong>Credentials</strong> &mdash; The IDs and tokens that are used in
-GCM to ensure that all parties have been authenticated, and
-that the message is going to the correct place.</li>
-</ul>
-
-<p class="table-caption" id="table1">
-  <strong>Table 1.</strong> GCM components and credentials.</p>
-
-<table>
-  <tr>
-    <th colspan="2">Components</th>
-  </tr>
-<tr>
-    <td><strong>GCM Connection Servers</strong></td>
-    <td>The Google-provided servers involved in sending messages between the
-3rd-party app server and the client app.</td>
-  </tr>
-  <tr>
-    <td><strong>Client App</strong></td>
-    <td>A GCM-enabled client app that communicates with a 3rd-party app server.</td>
-  </tr>
-  <tr>
-    <td><strong>3rd-party App Server</strong></td>
-    <td>An app server that you write as part of implementing
-GCM. The 3rd-party app server sends data to a client app via
-the GCM connection server.</td>
-  </tr>
-  <tr>
-    <th colspan="2">Credentials</th>
-  </tr>
-  <tr>
-    <td id="senderid"><strong>Sender ID</strong></td>
-    <td>A project number you acquire from the API console, as described in
-<a href="gs.html#create-proj">Getting Started</a>. The sender
-ID is used in the <a href="#register">registration process</a> to identify a
-3rd-party app server that is permitted to send messages to the client app.</td>
-  </tr>
-  <tr>
-    <td id="apikey"><strong>Sender Auth Token</strong></td>
-    <td>An API key that is saved on the 3rd-party app
-server that gives the app server authorized access to Google services.
-The API key is included in the header of POST requests.
-</td>
-  </tr>
-  <tr>
-    <td><strong>Application ID</strong></td>
-    <td>The client app that is registering to receive messages. How this is implemented
-is platform-dependent. For example, an Android app
-is identified by the package name from the <a href="client.html#manifest">manifest</a>.
-This  ensures that the messages are targeted to the correct Android app.</td>
-  </tr>
-  <tr>
-    <td><strong>Registration ID</strong></td>
-    <td>An ID issued by the GCM servers to the client app that allows
-it to receive messages. Note that registration IDs must be kept secret.
-
-</td>
-  </tr>
-
-</table>
-
-<h2 id="arch">Architectural Overview</h2>
-
-<p>A GCM implementation includes a Google-provided
-connection server, a 3rd-party app server that interacts with the connection
-server, and a GCM-enabled client app. For example, this diagram shows GCM
-communicating with a client app on an Android device:</p>
-
-<img src="{@docRoot}images/gcm/GCM-arch.png">
-
-<p class="img-caption">
-  <strong>Figure 1.</strong> GCM Architecture.
-</p>
-
-<p>This is how these components interact:</p>
-<ul>
-  <li>Google-provided <strong>GCM Connection Servers</strong> take messages from
-a 3rd-party app server and send these messages to a
-GCM-enabled client app (the &quot;client app&quot;).
-Currently Google provides connection servers for <a href="http.html">HTTP</a>
-and <a href="ccs.html">XMPP</a>.</li>
-  <li>The <strong>3rd-Party App Server</strong> is a component that you
-implement to work with your chosen GCM connection server(s). App servers send
-messages to a GCM connection server; the connection server enqueues and stores the
-message, and then sends it to the client app.
-For more information, see <a href="server.html">Implementing GCM Server</a>.</li>
-  <li>The <strong>Client App</strong> is a GCM-enabled client app.
-To receive GCM messages, this app must register with GCM and get a
-registration ID. If you are using the <a href="ccs.html">XMPP</a> (CCS) connection
-server, the client app can send "upstream" messages back to the 3rd-party app server.
-For more information on how to implement the client app, see
-the documentation for your platform.</li>
-</ul>
-
-<h2 id="lifecycle">Lifecycle Flow</h2>
-
-<ul>
-  <li><strong>Register to enable GCM</strong>. A client app registers to receive messages.
-For more discussion, see <a href="#register">Register to enable GCM</a>.</li>
-  <li><strong>Send and receive downstream messages</strong>.
-  <ul>
-     <li>Send a message. A 3rd-party app server sends messages to the client app:
-       <ol>
-         <li>The 3rd-party app server <a href="server.html#send-msg">sends a message</a>
-to GCM connection servers.</li>
-         <li>The GCM connection server enqueues and stores the message if the device is offline.</li>
-         <li>When the device is online, the GCM connection server sends the message to the device. </li>
-         <li>On the device, the client app receives the message according to the platform-specific implementation.
-See your platform-specific documentation for details.</li>
-       </ol>
-    </li>
-  <li>Receive a message. A client app
-receives a message from a GCM server. See your platform-specific documentation for details
-on how a client app in that environment processes the messages it receives.</li>
-  </ul>
-</li>
-
-  <li><strong>Send and receive upstream messages</strong>. This feature is only available if
-you're using the <a href="ccs.html">XMPP Cloud Connection Server</a> (CCS).
-<ul>
-     <li>Send a message. A client app sends messages to the 3rd-party app server:
-      <ol>
-        <li>On the device, the client app sends messages to XMPP (CCS).See your platform-specific
-          documentation for details on how a client app can send a message to XMPP (CCS).</li>
-        <li>XMPP (CCS) enqueues and stores the message if the server is disconnected.</li>
-        <li>When the 3rd-party app server is re-connected, XMPP (CCS) sends the message to the 3rd-party app server.</li>
-      </ol>
-    </li>
-  <li>Receive a message. A 3rd-party app server receives a message from XMPP (CCS) and then does the following:
-      <ol>
-        <li>Parses the message header to verify client app sender information.
-        <li>Sends "ack" to GCM XMPP connection server to acknowledge receiving the message.
-        <li>Optionally parses the message payload, as defined by the client app.
-      </ol>
-</li>
-</ul>
-
-</li>
-
-
-</ul>
-
-<h2 id="reg">Register to enable GCM</h2>
-
-<p>Regardless of the platform you're developing on, the first step
-a client app must do is register with GCM. This section covers some of the general
-best practices for registration and unregistration. See your platform-specific docs for
-details on writing a GCM-enabled client app on that platform.</p>
-
-<h3 id="reg-state">Keeping the Registration State in Sync</h3>
-<p>Whenever the app registers as described in
-<a href="{@docRoot}google/gcm/client.html">Implementing GCM Client</a>,
-it should save the registration ID for future use, pass it to the
-3rd-party server to complete the registration, and keep track of
-whether the server completed the registration. If the server fails
-to complete the registration, the client app should retry passing the
-registration ID to 3rd-party app server to complete the registration.
-If this continues to fail, the client app should unregister from GCM.</p>
-
-<p>There are also two other scenarios that require special care:</p>
-<ul>
-  <li>Client app update</li>
-  <li>Backup and restore
-  </li>
-</ul>
-<p><bold>Client app update:</bold> When a client app is updated, it should invalidate its existing registration
-ID, as it is not guaranteed to work with the new version.  The recommended way to achieve
-this validation is by storing the current app version when a registration
-ID is stored. Then when the app starts, compare the stored value with
-the current app version. If they do not match, invalidate the stored data
-and start the registration process again.</p>
-
-<p><bold>Backup and restore: </bold> You should not save the registration ID when an app is
-backed up. This is because the registration ID could become invalid by the time
-the app is restored, which would put the app in an invalid state
-(that is, the app thinks it is registered, but the server and GCM do not
-store that registration ID anymore&mdash;thus the app will not get more
-messages). The best practice is to initiate the registration process as if the app has been
-installed for the first time.</p>
-
-<h4 id="canonical">Canonical IDs</h4>
-<p>If a bug in the app triggers multiple
-registrations for the same device, it can be hard to reconcile state and you might
-end up with duplicate messages.</p>
-<p>GCM provides a facility called &quot;canonical registration IDs&quot; to easily
-recover from these situations. A canonical registration ID is defined to be the ID
-of the last registration requested by your app. This is the ID that the
-server should use when sending messages to the device.</p>
-<p>If later on you try to send a message using a different registration ID, GCM
-will process the request as usual, but it will include the canonical registration
-ID in the <code>registration_id</code> field of the response. Make sure to replace
-the registration ID stored in your server with this canonical ID, as eventually
-the ID you're using will stop working.</p>
-
-<h3 id="retry">Automatic Retry Using Exponential Back-Off</h3>
-
-<p>When registration or unregistration fails, the app should retry the failed operation.</p>
-<p>In the simplest case, if your app attempts to register and GCM is not a
-fundamental part of the app, the app could simply ignore the error
-and try to register again the next time it starts. Otherwise, it should retry the
-previous operation using exponential back-off. In exponential back-off, each time
-there is a failure, it should wait twice the previous amount of time before trying
-again.
-</p>
-
-<h3 id="unreg">Unregistration</h3>
-
-<p>This section explains when you should unregister in GCM and what happens
-when you do.</p>
-
-<h4 id="unreg-why">Why you should rarely unregister</h4>
-
-<p>You should only need to unregister in rare cases, such as
-if you want an app to stop receiving messages, or if you suspect that the registration ID has
-been compromised. In general, once an app has a registration ID, you shouldn't need
-to change it.</p>
-
-<p>In particular, you should never unregister your app as a mechanism for
-logout or for switching between users, for the following reasons:</p>
-
-<ul>
-  <li>A registration ID isn't associated with a particular
-  logged in user. If you unregister and then re-register, GCM may return the same
-  ID or a different ID&mdash;there's no guarantee either way.</li>
-
-  <li>Unregistration may take up to 5 minutes to propagate.</li>
-  <li>After unregistration, re-registration may again take up to 5 minutes to
-propagate. During this time messages may be rejected due to the state of being
-unregistered, and after all this, messages may still go to the wrong user.</li>
-</ul>
-
-
-<p>To make sure that messages go to the intended user:</p>
-
-<ul>
-  <li>Your app server can maintain a mapping between the current user
-and the registration ID.</li>
-  <li>The app can then check to ensure that messages it
-receives match the logged in user.</li>
-</ul>
-
-
-<h4 id="unreg-how">How unregistration works</h4>
-
-<p>A client app can be automatically unregistered after it is uninstalled.
-However, this process does not happen right away. What happens in
-this scenario is as follows:</p>
-<ol>
-  <li>The end user uninstalls the client app.</li>
-  <li>The 3rd-party app server sends a message to GCM server.</li>
-  <li>The GCM server sends the message to the GCM client on the device.</li>
-  <li>The GCM client on the device receives the message and detects that the client app has been
-   uninstalled; the detection details depend on the platform on which the client app is running.
-</li>
-  <li>The GCM client on the device informs the GCM server that the client app was uninstalled.</li>
-  <li>The GCM server marks the registration ID for deletion.</li>
-  <li>The 3rd-party app server sends a message to  GCM.</li>
-  <li>The GCM returns a <code>NotRegistered</code> error message to the 3rd-party app server.</li>
-  <li>The 3rd-party app server deletes the registration ID.
-  </li>
-</ol>
-
-<p>Note that it might take a while for the registration ID be completely removed
-from GCM. Thus it is possible that messages sent during step 7 above gets a valid
-message ID as response, even though the message will not be delivered to the client app.
-Eventually, the registration ID will be removed and the server will get a
-<code>NotRegistered</code> error, without any further action being required from
-the 3rd-party server (this scenario happens frequently while an app is
-being developed and tested).</p>
-
diff --git a/docs/html/google/gcm/gs.jd b/docs/html/google/gcm/gs.jd
deleted file mode 100644
index 2331292..0000000
--- a/docs/html/google/gcm/gs.jd
+++ /dev/null
@@ -1,94 +0,0 @@
-page.title=Getting Started on Android
-page.tags=cloud,push,messaging
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-
-<h2>In this document</h2>
-
-<ol class="toc">
-<li><a href="#create-proj">Creating a Google API Project</a></li>
-<li><a href="#gcm-service">Enabling the GCM Service</a></li>
-<li><a href="#access-key">Obtaining an API Key</a></li>
-<li><a href="#next">Next Steps</a></li>
-</ol>
-
-<h2>See Also</h2>
-
-<ol class="toc">
-<li><a href="https://cloud.google.com/console">Google Cloud Console</a></li>
-<li><a href="https://developers.google.com/console/help/new/">Google Cloud Console Help</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>This document tells you how to get started setting up a Google Cloud Messaging
-(GCM) implementation.
-Before you begin, make sure to <a href="/google/play-services/setup.html">set up
-the Google Play Services SDK</a>. You need this SDK to use the
-<a href="{@docRoot}reference/com/google/android/gms/gcm/package-summary.html">
-GCM APIs</a>.</p>
-
-<h2 id="create-proj">Creating a Google API project</h2>
-<p>To create a Google API project:</p>
-<ol>
-  <li>Open the <a href="https://cloud.google.com/console">Google Developers Console</a>.
-  </li>
-  <li>If you haven't created an API project yet, click <strong>Create Project</strong>.</li>
-
- <li>Supply a project name and click <strong>Create</strong>.
-
-<p>Once the project has been created, a page appears that displays your project ID and
-project number. For example, <strong>Project Number: 670330094152</strong>.</p></li>
-
-  <li>Copy down your project number. You will use it later on as the
-  <a href="{@docRoot}google/gcm/gcm.html#senderid">GCM sender ID</a>.</li>
-
-</ol>
-<h2 id="gcm-service">Enabling the GCM Service</h2>
-<p>To enable the GCM service:</p>
-<ol>
-  <li>In the sidebar on the left, select <strong>APIs &amp; auth</strong>. </li>
-  <li>In the displayed list of APIs, turn the <strong>Google Cloud Messaging for Android
-  </strong> toggle to ON.</li>
-
-</ol>
-<h2 id="access-key">Obtaining an API Key</h2>
-<p>To obtain an API  key:</p>
-<ol>
- <li>In the sidebar on the left, select <strong>APIs &amp; auth > Credentials</strong>.</li>
-
- <li>Under <strong>Public API access</strong>, click <strong>Create new key</strong>.</li>
-
-<li>In the <strong>Create a new key</strong> dialog, click <strong>Server key</strong>.</li>
-
-<li>In the resulting configuration dialog, supply your server's IP address. For testing
-purposes, you can use {@code 0.0.0.0/0}.</p></li>
-<li>Click <strong>Create</strong>.</li>
-
-<li>In the refreshed page, copy the
-<a href="{@docRoot}google/gcm/gcm.html#apikey">API key</a>.
-You will need the API key later on to perform authentication in your app server.</li>
-
-<p class="note"><strong>Note:</strong> If you need to rotate the key, click
-<strong>Regenerate key</strong>. A new key  will be created. If you think the key has been
-compromised and you want to delete it immediately, click <strong>Delete</strong>.</p>
-</ol>
-
-<h2 id="next">Next Steps</h2>
-
-<p>Once you've finished the tasks listed above, you're ready to start
-implementing GCM. Here is an overview of the basic steps:</p>
-
-<ol>
-  <li>Implement an app server (the "3rd-party app server") to interact
-with your chosen GCM connection server. The app server sends data to a
-GCM-enabled Android client app via the GCM connection server. For more
-information about implementing the server side, see <a href="server.html">
-Implementing GCM Server</a>.</li>
-<li>Write your client app. This is the GCM-enabled Android app that runs
-on a device. See <a href="client.html">Implementing GCM Client</a> for more information.</li>
-</ol>
diff --git a/docs/html/google/gcm/helper.jd b/docs/html/google/gcm/helper.jd
deleted file mode 100644
index 19dcdc5..0000000
--- a/docs/html/google/gcm/helper.jd
+++ /dev/null
@@ -1,199 +0,0 @@
-page.title=Using the GCM Helper Libraries
-page.tags=cloud,push,messaging
-@jd:body
-
-<div id="deprecatedSticker">
-  <a href="#" 
-     onclick="$('#naMessage').show();$('#deprecatedSticker').hide();return false">
-    <strong>This doc is deprecated</strong></a>
-</div>
-
-
-<div id="naMessage" style="display:block">
-<div><p><strong>The information in this document has been superseded by <a href="server.html">GCM Server</a> and <a href="client.html">GCM Client</a></strong>. Please use the <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">{@code GoogleCloudMessaging}</a> API instead of the GCM client helper library. The GCM server helper library is still valid.</p>
-
- <input style="margin-top:1em;padding:5px" type="button"
-        value="That's nice, but I still want to read this document"
-onclick="$('#naMessage').hide();$('#deprecatedSticker').show()" />
-</div>
-</div>
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Quickview</h2>
-
-<ul>
-<li>Walk through the steps of creating a GCM app.</li>
-</ul>
-
-
-<h2>In this document</h2>
-
-<ol class="toc">
-<li><a href="#libs">Installing the Helper Libraries</a></li>
-<li><a href="#android-app">Writing the Android Application</a>
-<li><a href="#server-app">Writing the Server-side Application</a> </li>
-</ol>
-
-<h2>See Also</h2>
-
-<ol class="toc">
-<li><a href="{@docRoot}google/play-services/gcm/gs.html">Getting Started with GCM Extensions</a></li>
-<li><a href="https://services.google.com/fb/forms/gcm/" class="external-link" target="_android">CCS and User Notifications Signup Form</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>This document describes how to write an Android application and the  server-side logic, using the client and server <a href="{@docRoot}reference/com/google/android/gcm/package-summary.html">helper libraries</a> provided by GCM.</p> 
-
-<p>The helper libraries are one option for creating an Android application that uses GCM. You can alternatively use the approach described in the <a href="{@docRoot}google/gcm/gcm.html#writing_apps">GCM Architectural Overview</a>. If you need to perform upstream messaging, you must use the <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">GoogleCloudMessaging</a> APIs, and <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">GoogleCloudMessaging</a> also provides a streamlined registration process.</p>
-
-<p>For information on how to get started creating an Android GCM application and an example of how to use the <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">GoogleCloudMessaging</a> APIs, see <a href="{@docRoot}google/gcm/gs.html">Getting Started</a>.</p>
-
-<h2 id="libs">Installing the Helper Libraries</h2>
-<p>To perform the steps described in the following sections, you must first install the 
-<a href="{@docRoot}reference/com/google/android/gcm/package-summary.html">helper libraries</a>. Note that while using the helper libraries is recommended, it is not required. See the <a href="gcm.html#writing_apps">GCM Architectural Overview</a> for a description of how to write apps without using the helper libraries.
-
-<p>To install the helper libraries, choose 
-<strong>Extras &gt; Google Cloud Messaging for Android Library</strong>
-from the SDK Manager. This creates a <code>gcm</code> directory under
-<code><em>YOUR_SDK_ROOT</em>/extras/google/</code> containing these
-subdirectories: <code>gcm-client</code>, <code>gcm-server</code>,
-<code>samples/gcm-demo-client</code>, <code>samples/gcm-demo-server</code>,
-and <code>samples/gcm-demo-appengine</code>.</p>
-
-<p class="note"><strong>Note:</strong> If you don't see <strong>Extras &gt; Google Cloud Messaging for Android Library</strong> in the SDK Manager, make sure you are running version 20 or higher. Be sure to restart the SDK Manager after updating it.</p>
-
-<h2 id="android-app">Writing the Android Application</h2>
-<p>This section describes the steps involved in writing an Android application that uses GCM.</p>
-<h4>Step 1: Copy the gcm.jar file into your application classpath</h4>
-<p> To write your Android application, first copy the <code>gcm.jar</code> file from the SDK's <code>gcm-client/dist</code> directory to your application classpath.</p>
-<h4>Step 2: Make the following changes in the application's Android manifest</h4>
-<ol>
-  <li>GCM requires Android 2.2 or later, so if your application cannot work without GCM, add the following line, where <em>xx</em> is the latest target SDK version:</li>
-
-<pre class="prettyprint pretty-xml">&lt;uses-sdk android:minSdkVersion=&quot;8&quot; android:targetSdkVersion=&quot;xx&quot;/&gt;</pre>
-
-  <li>Declare and use a custom permission so only this application can receive GCM messages:<br>
-  </li>
-
-<pre class="prettyprint pretty-xml">&lt;permission android:name=&quot;my_app_package.permission.C2D_MESSAGE&quot; android:protectionLevel=&quot;signature&quot; /&gt;
-&lt;uses-permission android:name=&quot;my_app_package.permission.C2D_MESSAGE&quot; /&gt; </pre>
-<p> This permission must be called <code>my_app_package.permission.C2D_MESSAGE</code> (where <code>my_app_package</code> is the package name of your app as defined by the manifest tag), otherwise it will not  work.</p>
-<p class="note"><strong>Note:</strong> This permission is not required if you are targeting your application to 4.1 or above (i.e., minSdkVersion 16)</p>
-
-  <li>Add the following permissions:</li>
-
-<pre class="prettyprint pretty-xml">&lt;!-- App receives GCM messages. --&gt;
-&lt;uses-permission android:name=&quot;com.google.android.c2dm.permission.RECEIVE&quot; /&gt;
-&lt;!-- GCM connects to Google Services. --&gt;
-&lt;uses-permission android:name=&quot;android.permission.INTERNET&quot; /&gt; 
-&lt;!-- GCM requires a Google account. --&gt;
-&lt;uses-permission android:name=&quot;android.permission.GET_ACCOUNTS&quot; /&gt;
-&lt;!-- Keeps the processor from sleeping when a message is received. --&gt;
-&lt;uses-permission android:name=&quot;android.permission.WAKE_LOCK&quot; /&gt;</pre>
-
-  <li>Add the following broadcast receiver:</li>
-
-<pre class="prettyprint pretty-xml">&lt;receiver android:name=&quot;com.google.android.gcm.GCMBroadcastReceiver&quot; android:permission=&quot;com.google.android.c2dm.permission.SEND&quot; &gt;
-  &lt;intent-filter&gt;
-    &lt;action android:name=&quot;com.google.android.c2dm.intent.RECEIVE&quot; /&gt;
-    &lt;action android:name=&quot;com.google.android.c2dm.intent.REGISTRATION&quot; /&gt;
-    &lt;category android:name=&quot;my_app_package&quot; /&gt;
-  &lt;/intent-filter&gt;
-&lt;/receiver&gt;</pre>
-<p> This broadcast receiver is responsible for handling the 2 intents that can be sent by GCM (<code>com.google.android.c2dm.intent.RECEIVE</code> and <code>com.google.android.c2dm.intent.REGISTRATION</code>) and should be defined in the manifest (rather than programmatically) so that these intents can be received even if the application is not running. By setting the <code>com.google.android.c2dm.permission.SEND</code> permission, you are ensuring that only intents sent by the GCM system framework are sent to the receiver (a regular application cannot issue intents with that permission).</p>
-<p> Notice that <code>android:name</code> in the category tag must be replaced by your application's package name (and the category tag  is not required for applications targeted to minSdkVersion 16 and higher).<br>
-  </p>
-
-  <li>Add the following intent service:</li>
-
-
- <pre class="prettyprint pretty-xml">&lt;service android:name=&quot;.GCMIntentService&quot; /&gt;</pre>
-
-</ol>
-<p>This intent service will be called by the <code>GCMBroadcastReceiver</code> (which is provided by the GCM library), as shown in the next step. It must be a subclass of <code>com.google.android.gcm.GCMBaseIntentService</code>, must contain a public constructor, and should be named <code>my_app_package.GCMIntentService</code> (unless you use a subclass of <code>GCMBroadcastReceiver</code> that overrides the method used to name the service).</p>
-
-<p>The intent service must also define its sender ID(s). It does this as follows:</p>
-<ul>
-  <li>If the value is static, the service's default constructor should call <code>super(senderIds)</code>.</li>
-  <li>If the value is dynamic, the service should override the <code>getSenderIds()</code> method.</li>
-</ul>
-
-
-<h4>Step 3: Write the my_app_package.GCMIntentService class</h4>
-
-<p>Next write the <code>my_app_package.GCMIntentService</code> class, overriding the following callback methods (which are called by <code>GCMBroadcastReceiver</code>):<br>
-</p>
-<ul>
-  <li><code>onRegistered(Context context, String regId)</code>: Called after a registration intent is received, passes the registration ID assigned by GCM to that device/application pair as parameter. Typically, you should send the <code>regid</code> to your server so it can use it to send messages to this device.</li>
-  <li><code>onUnregistered(Context context, String regId)</code>: Called after the device has been unregistered from GCM. Typically, you should send the <code>regid</code> to the server so it unregisters the device.</li>
-  <li><code>onMessage(Context context, Intent intent)</code>: Called when your server sends a message to GCM, and GCM delivers it to the device. If the message has a payload, its contents are available as extras in the intent.</li>
-  <li><code>onError(Context context, String errorId)</code>: Called when the device tries to register or unregister, but GCM returned an error. Typically, there is nothing to be done other than evaluating the error (returned by errorId) and trying to fix the problem.</li>
-  <li> <code>onRecoverableError(Context context, String errorId)</code>: Called when the device tries to register or unregister, but the GCM servers are unavailable. The GCM library will retry the operation using exponential backup, unless this method is overridden and returns false. This method is optional and should be overridden only if you want to display the message to the user or cancel the retry attempts. 
-  </li>
-</ul>
-
-<p class="note"><strong>Note:</strong> The methods above run in the intent service's thread and hence are free to make network calls without the risk of blocking the UI thread.</p>
-
-<h4> Step 4: Write your application's main activity</h4>
-Add the following import statement in your application's main activity:
-<pre class="prettyprint pretty-java">import com.google.android.gcm.GCMRegistrar;</pre>
-<p> In the <code>onCreate()</code> method, add the following code:</p>
-<pre class="prettyprint pretty-java">GCMRegistrar.checkDevice(this);
-GCMRegistrar.checkManifest(this);
-final String regId = GCMRegistrar.getRegistrationId(this);
-if (regId.equals("")) {
-  GCMRegistrar.register(this, SENDER_ID);
-} else {
-  Log.v(TAG, "Already registered");
-}</pre>
-<p>The <code>checkDevice()</code> method verifies that the device supports GCM and throws an exception if it does not (for instance, if it is an emulator that does not contain the Google APIs). Similarly, the <code>checkManifest()</code> method verifies that the application manifest contains meets all the requirements described in <a href="#android-app">Writing the Android Application</a> (this method is only necessary when you are developing the application; once the application is ready to be published, you can remove it).</p>
-
-<p>Once the sanity checks are done, the device calls <code>GCMRegsistrar.register()</code> to register the device, passing the <code>SENDER_ID</code> you got when you signed up for GCM. But since the <code>GCMRegistrar</code> singleton keeps track of the registration ID upon the arrival of registration intents, you can call <code>GCMRegistrar.getRegistrationId()</code> first to check if the device is already registered.</p>
-<p class="note"><strong>Note:</strong> It is possible that the device was successfully registered to GCM but failed to send the registration ID to your server, in which case you should retry. See <a href="adv.html#reg-state">Advanced Topics</a> for more details on how to handle this scenario.</p>
-
-<h2 id="server-app">Writing the Server-side Application</h2>
-
-<p>To write the server-side application:</p>
-<ol>
-  <li> Copy the <code>gcm-server.jar</code> file from the SDK's <code>gcm-server/dist</code> directory to your server classpath.</li>
-  <li>Create a servlet (or other server-side mechanism) that can be used by the Android application to send the registration ID received by GCM . The application might also need to send other information&mdash;such as the user's email address or username&mdash;so that the server can associate the registration ID with the user owning the device.</li>
-  <li>Similarly, create a servlet used to unregister registration IDs.<br>
-    </li>
-<li>When the server needs to send a message to the registration ID, it can use the <code>com.google.android.gcm.server.Sender</code> helper class from the GCM library. For example:</li>
-</ol>
-
-<pre class="prettyprint pretty-java">import com.google.android.gcm.server.*;
-
-Sender sender = new Sender(myApiKey);
-Message message = new Message.Builder().build();
-MulticastResult result = sender.send(message, devices, 5);</pre>
-
-<p> The snippet above does the following:
-<ul>
-<li>Creates a <code>Sender</code> object using your project's API key.</li>
-<li>Creates a message using a given registration ID (the message builder also has methods to set all message parameters such as the collapse key and payload data).</li>
-<li>Sends the message with a maximum of 5 retry attempts (in case the GCM servers are unavailable), and stores the response on result. </li>
-</ul>
-<p>It's now necessary to parse the result and take the proper action in the following cases:</p>
-<ul>
-  <li>If the message was created but the result returned a canonical registration ID, it's necessary to replace the current registration ID with the canonical one.</li>
-  <li>If the returned error is <code>NotRegistered</code>, it's necessary to remove that registration ID, because the application was uninstalled from the device.</li>
-</ul>
-<p> Here's a code snippet that handles these 2 conditions:</p>
-<pre class="prettyprint pretty-java">
-if (result.getMessageId() != null) {
- String canonicalRegId = result.getCanonicalRegistrationId();
- if (canonicalRegId != null) {
-   // same device has more than on registration ID: update database
- }
-} else {
- String error = result.getErrorCodeName();
- if (error.equals(Constants.ERROR_NOT_REGISTERED)) {
-   // application has been removed from device - unregister database
- }
-}</pre>
diff --git a/docs/html/google/gcm/http.jd b/docs/html/google/gcm/http.jd
deleted file mode 100644
index e36440a..0000000
--- a/docs/html/google/gcm/http.jd
+++ /dev/null
@@ -1,445 +0,0 @@
-page.title=GCM HTTP Connection Server
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-
-<h2>In this document</h2>
-
-<ol class="toc">
-  <li><a href="#auth">Authentication</a> </li>
-  <li><a href="#request">Request Format</a> </li>
-  <li><a href="#response">Response Format</a>
-  <ol class="toc">
-    <li><a href="#success">Interpreting a success response</a>
-    <li><a href="#error_codes">Interpreting an error response</a>
-    <li><a href="#example-responses">Example responses</a>
-  </ol>
-  </li>
-  <li><a href="#app-server">Implementing an HTTP-Based App Server</a>
-</ol>
-
-<h2>See Also</h2>
-
-<ol class="toc">
-<li><a href="server-ref.html">Server Reference</a></li>
-<li><a href="gs.html">Getting Started</a></li>
-<li><a href="client.html">Implementing GCM Client</a></li>
-<li><a href="ccs.html">Cloud Connection Server</a></li>
-
-
-</ol>
-
-</div>
-</div>
-
-<p>This document describes the Google Cloud Messaging (GCM) HTTP
-connection server. Connection servers
-are the Google-provided servers that take messages from the 3rd-party
-application server and sending them to the device.</p>
-
-<p class="note"><strong>Note:</strong> The content in this document
-applies to <a href="http://developer.chrome.com/apps/cloudMessaging">
-GCM with Chrome apps</a> as well as Android.</p>
-
-<p>See the
-<a href="server-ref.html">Server Reference</a> for a list of all the message
-parameters and which connection server(s) supports them.</p>
-
-
-<h2 id="auth">Authentication</h2>
-
-<p>To send a  message, the application server issues a POST request. For example:</p>
-<pre>https://android.googleapis.com/gcm/send</pre>
-<p>A  message request is made of 2 parts: HTTP header and HTTP body.</p>
-
-<p>The HTTP header must contain the following headers:</p>
-<ul>
-  <li><code>Authorization</code>: key=YOUR_API_KEY</li>
-  <li><code>Content-Type</code>: <code>application/json</code> for JSON;
-<code>application/x-www-form-urlencoded;charset=UTF-8</code> for plain text.
-If <code>Content-Type</code> is omitted, the format
-is assumed to be plain text.
-  </li>
-</ul>
-
-<p>For example:
-</p>
-
-<pre>Content-Type:application/json
-Authorization:key=AIzaSyB-1uEai2WiUapxCs2Q0GZYzPu7Udno5aA
-
-{
-  "registration_ids" : ["APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx..."],
-  "data" : {
-    ...
-  },
-}</pre>
-
-
-<p>The HTTP body content depends on whether you're using JSON or plain text.
-See
-<a href="server-ref.html#params">the Server Reference</a> for a list of all the
-parameters your JSON or plain text message can contain.</p>
-
-<h3 id="checkAPIkey">Checking the validity of an API key</h3>
-
-<p>If you receive authentication errors when sending messages, check the validity
-of your API key. For example, on Android, run the following command:</p>
-
-<pre># api_key=YOUR_API_KEY
-
-# curl --header "Authorization: key=$api_key" \
-       --header Content-Type:"application/json" \
-       https://android.googleapis.com/gcm/send \
-       -d "{\"registration_ids\":[\"ABC\"]}"</pre>
-
-<p>
-If you receive a 401 HTTP status code, your API key is not valid. Otherwise you
-should see something like this:</p>
-
-<pre>
-{"multicast_id":6782339717028231855,"success":0,"failure":1,
-"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}
-</pre>
-
-<p>
-If you want to confirm the validity of a registration ID, you can do so by
-replacing "ABC" with the registration ID.
-</p>
-
-
-  <h2 id="request">Request Format</h2>
-
-<p>This section shows you how to format a request for both JSON and plain text. See
-the <a href="server-ref.html#table1">Server Reference</a> for a complete
-list of the fields you can include in a request.</p>
-
-  <p>Here is the smallest possible request (a message without any parameters and
-just one recipient) using JSON:</p>
-
-  <pre class="prettyprint pretty-json">{ &quot;registration_ids&quot;: [ &quot;42&quot; ] }</pre>
-
-  <p>And here the same example using plain text:</p>
-  <pre class="prettyprint">registration_id=42</pre>
-
-  <p> Here is a message with a payload and 6 recipients:</p>
-
-  <pre class="prettyprint pretty-HTML">{ "data": {
-    "score": "5x1",
-    "time": "15:10"
-  },
-  "registration_ids": ["4", "8", "15", "16", "23", "42"]
-}</pre>
-  <p>Here is a message with all optional fields set and 6 recipients:</p>
-  <pre class="prettyprint pretty-json">{ "collapse_key": "score_update",
-  "time_to_live": 108,
-  "delay_while_idle": true,
-  "data": {
-    "score": "4x8",
-    "time": "15:16.2342"
-  },
-  "registration_ids":["4", "8", "15", "16", "23", "42"]
-}</pre>
-  <p>And here is the same message using plain-text format (but just 1 recipient):  </p>
-
-  <pre class="prettyprint">collapse_key=score_update&amp;time_to_live=108&amp;delay_while_idle=1&amp;data.score=4x8&amp;data.time=15:16.2342&amp;registration_id=42
-  </pre>
-
-<p>Here is a message that includes a notification key and payload:</p>
-
-<pre>
-{
-  "data": {
-    "message": "ciao"
-  },
-  "notification_key":"aUniqueKey"
-}
-</pre>
-
-<p>For more information about notifications and how to use them, see
-<a href="{@docRoot}google/gcm/notifications.html">User Notifications</a>.</p>
-
-
-<p class="note"><strong>Note:</strong> If your organization has a firewall
-that restricts the traffic to or
-from the Internet, you need to configure it to allow connectivity with GCM in order for
-your GCM client apps to receive messages.
-The ports to open are: 5228, 5229, and 5230. GCM typically only uses 5228, but
-it sometimes uses 5229 and 5230. GCM doesn't provide specific IPs, so you should allow
-your firewall to accept outgoing connections to all IP addresses
-contained in the IP blocks listed in Google's ASN of 15169.</p>
-
-
-
-<h2 id="response">Response format</h2>
-
-<p>There are two possible outcomes when trying to send a message:</p>
-<ul>
-  <li>The message is processed successfully. The HTTP response has a 200 status, and
-the body contains more information about the status of the message (including possible errors).</li>
-  <li>The GCM server rejects the request. The HTTP response contains a
-non-200 status code (such as 400, 401 or 5xx).</li>
-</ul>
-
-<p>When a JSON request is successful (HTTP status code 200), the JSON object returned
-contains the <a href="{@docRoot}google/gcm/server-ref.html#table4">
-Downstream HTTP message response body</a>.</p>
-
-<p>If the value of <code>failure</code> and <code>canonical_ids</code> is 0, it's
-not necessary to parse the remainder of the response. Otherwise, we recommend
-that you iterate through the results field and do the following for each object
-in that list:</p>
-<ul>
-  <li>If <code>message_id</code> is set, check for <code>registration_id</code>:
-    <ul>
-      <li>If <code>registration_id</code> is set, replace the original ID with
-the new value (canonical ID) in your server database. Note that the original ID
-is not part of the result, so you need to obtain it from the list of
-code>registration_ids</code> passed in the request (using the same index).</li>
-    </ul>
-  </li>
-  <li>Otherwise, get the value of <code>error</code>:
-    <ul>
-      <li>If it is <code>Unavailable</code>, you could retry to send it in another
-request.</li>
-      <li>If it is <code>NotRegistered</code>, you should remove the registration
-ID from your server database because the application was uninstalled from the
-device, or the client app isn't configured to receive
-messages.</li>
-      <li>Otherwise, there is something wrong in the registration ID passed in
-the request; it is probably a non-recoverable error that will also require removing
-the registration from the server database. See
-<a href="{@docRoot}google/gcm/server-ref.html#error-codes">Downstream message error response
-  codes</a> for all possible error values.</li>
-    </ul>
-  </li>
-</ul>
-
-<p>When a plain-text request is successful (HTTP status code 200), the response
-body contains 1 or 2 lines in the form of key/value pairs.
-The first line is always available and its content is either <code>id=<em>ID of
-sent message</em></code> or <code>Error=<em>GCM error code</em></code>. The second
-line, if available,
-has the format of <code>registration_id=<em>canonical ID</em></code>. The second
-line is optional, and it can only be sent if the first line is not an error. We
-recommend handling the plain-text response in a similar way as handling the
-JSON response:</p>
-<ul>
-  <li>If first line starts with <code>id</code>, check second line:
-    <ul>
-      <li>If second line starts with <code>registration_id</code>, gets its value
-and replace the registration IDs in your server database.</li>
-    </ul>
-  </li>
-  <li>Otherwise, get the value of <code>Error</code>:
-    <ul>
-      <li>If it is <code>NotRegistered</code>, remove the registration ID from
-your server database.</li>
-      <li>Otherwise, there is probably a non-recoverable error (<strong>Note:
-</strong>Plain-text requests will never return <code>Unavailable</code> as the
-error code, they would have returned a 500 HTTP status instead).</li>
-    </ul>
-  </li>
-</ul>
-
-
-<h3 id="example-responses">Example responses</h3>
-<p>This section shows a few examples of responses indicating messages that were
-processed successfully. See <a href="#request">Request Format</a> for
-the requests these responses are based on.</p>
-<p> Here is a simple case of a JSON message successfully sent to one recipient
-without canonical IDs in the response:</p>
-<pre class="prettyprint pretty-json">{ "multicast_id": 108,
-  "success": 1,
-  "failure": 0,
-  "canonical_ids": 0,
-  "results": [
-    { "message_id": "1:08" }
-  ]
-}</pre>
-
-<p>Or if the request was in plain-text format:</p>
-<pre class="prettyprint">id=1:08
-</pre>
-
-<p>Here are JSON results for 6 recipients (IDs 4, 8, 15, 16, 23, and 42 respectively)
-with 3 messages successfully processed, 1 canonical registration ID returned,
-and 3 errors:</p>
-<pre class="prettyprint pretty-json">{ "multicast_id": 216,
-  "success": 3,
-  "failure": 3,
-  "canonical_ids": 1,
-  "results": [
-    { "message_id": "1:0408" },
-    { "error": "Unavailable" },
-    { "error": "InvalidRegistration" },
-    { "message_id": "1:1516" },
-    { "message_id": "1:2342", "registration_id": "32" },
-    { "error": "NotRegistered"}
-  ]
-}
-</pre>
-<p> In this example:</p>
-<ul>
-  <li>First message: success, not required.</li>
-  <li>Second message: should be resent (to registration ID 8).</li>
-  <li>Third message: had an unrecoverable error (maybe the value got corrupted
-in the database).</li>
-  <li>Fourth message: success, nothing required.</li>
-  <li>Fifth message: success, but the registration ID should be updated in the
-server database (from 23 to 32).</li>
-  <li>Sixth message: registration ID (42) should be removed from the server database
-because the application was uninstalled from the device.</li>
-</ul>
-<p>Or if just the 4th message above was sent using plain-text format:</p>
-<pre class="prettyprint">Error=InvalidRegistration
-</pre>
-<p>If the 5th message above was also sent using plain-text format:</p>
-<pre class="prettyprint">id=1:2342
-registration_id=32
-</pre>
-
-
-<h2 id="app-server">Implementing an HTTP-Based App Server</h2>
-
-<p>This section gives examples of implementing an app server that works with the
-GCM HTTP connection server. Note that a full GCM implementation requires a
-client-side implementation, in addition to the server. This example is based on Android.</a>
-
-
-<p>Requirements</p>
-<p>For the web server:</p>
-<ul>
-  <li> <a href="http://ant.apache.org/">Ant 1.8</a> (it might work with earlier versions, but it's not guaranteed).</li>
-  <li>One of the following:
-    <ul>
-      <li>A running web server compatible with Servlets API version 2.5, such as
-<a href="http://tomcat.apache.org/">Tomcat 6</a> or <a href="http://jetty.codehaus.org/">Jetty</a>, or</li>
-      <li><a href="http://code.google.com/appengine/">Java App Engine SDK</a>
-version 1.6 or later.</li>
-    </ul>
-  </li>
-  <li>A Google account registered to use GCM.</li>
-  <li>The API  key for that account.</li>
-</ul>
-<p>For the Android application:</p>
-<ul>
-  <li>Emulator (or device) running Android 2.2 (ideally, 2.3 or above) with Google APIs.</li>
-  <li>The Google API project number of the account registered to use GCM.</li>
-</ul>
-
-<h3 id="gcm-setup">Setting Up GCM</h3>
-<p>Before proceeding with the server and client setup, it's necessary to register
-a Google account with the Google API Console, enable Google Cloud Messaging in GCM,
-and obtain an API key from the <a href="https://code.google.com/apis/console">
-Google API Console</a>.</p>
-<p>For instructions on how to set up GCM, see <a href="gs.html">Getting Started</a>.</p>
-
-
-<h3 id="server-setup">Setting Up an HTTP Server</h3>
-<p>This section describes the different options for setting up an HTTP server.</p>
-
-<h4 id="webserver-setup">Using a standard web server</h4>
-<p>To set up the server using a standard, servlet-compliant web server:</p>
-<ol>
-  <li>From the <a href="http://code.google.com/p/gcm">open source site</a>,
-download the following directories: <code>gcm-server</code>,
-<code>samples/gcm-demo-server</code>, and <code>samples/gcm-demo-appengine</code>.</p>
-
-
-  <li>In a text editor, edit the <code>samples/gcm-demo-server/WebContent/WEB-INF/classes/api.key</code> and replace the existing text with the API key obtained above.</li>
-  <li>In a shell window, go to the <code>samples/gcm-demo-server</code> directory.</li>
-  <li>Generate the server's WAR file by running <code>ant war</code>:</li>
-
-  <pre class="prettyprint">$ ant war
-
-Buildfile:build.xml
-
-init:
-   [mkdir] Created dir: build/classes
-   [mkdir] Created dir: dist
-
-compile:
-   [javac] Compiling 6 source files to build/classes
-
-war:
-     [war] Building war: <strong>dist/gcm-demo.war</strong>
-
-BUILD SUCCESSFUL
-Total time: 0 seconds
-</pre>
-
-  <li>Deploy the <code>dist/gcm-demo.war</code> to your running server. For instance, if you're using Jetty, copy <code>gcm-demo.war</code> to the <code>webapps</code> directory of the Jetty installation.</li>
-  <li>Open the server's main page in a browser. The URL depends on the server you're using and your machine's IP address, but it will be something like <code>http://192.168.1.10:8080/gcm-demo/home</code>, where <code>gcm-demo</code> is the application context and <code>/home</code> is the path of the main servlet.
-
-  </li>
-</ol>
-<p class="note"><strong>Note:</strong> You can get the IP by running <code>ifconfig</code> on Linux or MacOS, or <code>ipconfig</code> on Windows. </p>
-
-<p> You server is now ready.</p>
-
-<h4 id="appengine-setup">Using App Engine for Java</h4>
-
-<p>To set up the server using a standard App Engine for Java:</p>
-<ol>
-  <li>Get the files from the <a href="http://code.google.com/p/gcm">open source
-site</a>, as described above.</p>
-  </li>
-  <li>In a text editor, edit
-<code>samples/gcm-demo-appengine/src/com/google/android/gcm/demo/server/ApiKeyInitializer.java</code>
-and replace the existing text with the API key obtained above.
-
-  <p class="note"><strong>Note:</strong> The API key value set in that class will
-be used just once to create a persistent entity on App Engine. If you deploy
-the application, you can use App Engine's <code>Datastore Viewer</code> to change
-it later.</p>
-
-  </li>
-  <li>In a shell window, go to the <code>samples/gcm-demo-appengine</code> directory.</li>
-  <li>Start the development App Engine server by <code>ant runserver</code>,
-using the <code>-Dsdk.dir</code> to indicate the location of the App Engine SDK
-and <code>-Dserver.host</code> to set your server's hostname or IP address:</li>
-
-<pre class="prettyprint">
-$ ant -Dsdk.dir=/opt/google/appengine-java-sdk runserver -Dserver.host=192.168.1.10
-Buildfile: gcm-demo-appengine/build.xml
-
-init:
-    [mkdir] Created dir: gcm-demo-appengine/dist
-
-copyjars:
-
-compile:
-
-datanucleusenhance:
-  [enhance] DataNucleus Enhancer (version 1.1.4) : Enhancement of classes
-  [enhance] DataNucleus Enhancer completed with success for 0 classes. Timings : input=28 ms, enhance=0 ms, total=28 ms. Consult the log for full details
-  [enhance] DataNucleus Enhancer completed and no classes were enhanced. Consult the log for full details
-
-runserver:
-     [java] Jun 15, 2012 8:46:06 PM com.google.apphosting.utils.jetty.JettyLogger info
-     [java] INFO: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
-     [java] Jun 15, 2012 8:46:06 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
-     [java] INFO: Successfully processed gcm-demo-appengine/WebContent/WEB-INF/appengine-web.xml
-     [java] Jun 15, 2012 8:46:06 PM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
-     [java] INFO: Successfully processed gcm-demo-appengine/WebContent/WEB-INF/web.xml
-     [java] Jun 15, 2012 8:46:09 PM com.google.android.gcm.demo.server.ApiKeyInitializer contextInitialized
-     [java] SEVERE: Created fake key. Please go to App Engine admin console, change its value to your API Key (the entity type is 'Settings' and its field to be changed is 'ApiKey'), then restart the server!
-     [java] Jun 15, 2012 8:46:09 PM com.google.appengine.tools.development.DevAppServerImpl start
-     [java] INFO: The server is running at http://192.168.1.10:8080/
-     [java] Jun 15, 2012 8:46:09 PM com.google.appengine.tools.development.DevAppServerImpl start
-     [java] INFO: The admin console is running at http://192.168.1.10:8080/_ah/admin
-</pre>
-
-  <li>Open the server's main page in a browser. The URL depends on the server
-you're using and your machine's IP address, but it will be something like
-<code>http://192.168.1.10:8080/home</code>, where <code>/home</code>
-is the path of the main servlet.</li>
-
-  <p class="note"><strong>Note:</strong> You can get the IP by running <code>ifconfig</code>
-on Linux or MacOS, or <code>ipconfig</code> on Windows.</p>
-
-</ol>
-<p> You server is now ready.</p>
diff --git a/docs/html/google/gcm/index.jd b/docs/html/google/gcm/index.jd
deleted file mode 100644
index af5d741..0000000
--- a/docs/html/google/gcm/index.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Google Cloud Messaging for Android
-page.tags=gcm
-header.hide=1
-@jd:body
-
-
-<div class="landing-banner">
-
-<div class="col-5" style="min-height:100px">
-  <img src="{@docRoot}images/gcm/gcm-logo.png" />
-</div>
-<div class="col-7">
-
-  <h1 itemprop="name" style="margin-bottom:0;">Google Cloud Messaging for Android</h1>
-  <p itemprop="description">
-  Google Cloud Messaging (GCM) for Android is a service that allows you to send data
-from your server to your users' Android-powered device, and also to receive messages from
-devices on the same connection. The GCM service handles all aspects of queueing of messages
-and delivery to the target Android application running on the target device, and it is
-completely free.
-</p>
-
-</div>
-</div>
-
-<div class="landing-docs">
-  <div class="col-6 normal-links">
-    <h3 style="clear:left">Key Developer Features</h3>
-    <h4>Send data from your server to users' Android-powered devices</h4>
-    <p>This could be a lightweight
-message telling your app there is new data to be fetched from the
-server (for instance, a movie uploaded by a friend), or it could be a message containing
-up to 4kb of payload data (so apps like instant messaging can consume the message directly).
-<a href="{@docRoot}google/gcm/gcm.html">GCM Architectural Overview.</a></p>
-
-    <h4>Send "send-to-sync" messages</h4>
-    <p>A send-to-sync (collapsible) message is often a "tickle" that tells a mobile
-    application to sync data from the server. For example, suppose you have an email
-    application. When a user receives new email on the server, the server pings the mobile
-    application with a "New mail" message. This tells the application to sync to the server
-    to pick up the new email.
-    <a href="{@docRoot}google/gcm/adv.html#s2s">Learn more &raquo;</a></p>
-
-    <h4>Send messages with payload</h4>
-    <p>Unlike a send-to-sync message, every "message with payload" (non-collapsible message)
-    is delivered. The payload the message contains can be up to 4kb.
-    <a href="{@docRoot}google/gcm/adv.html#payload">Learn more &raquo;</a></p>
-  </div>
-
-
-  <div class="col-6 normal-links">
-    <h3 style="clear:left">New Features</h3>
-
-
-
-    <h4>Return Receipts</h4>
-    <p>You can use upstream messaging to get receipt notifications, confirming that a given
-    message was sent to a device. Your 3rd-party app server receives the receipt notification
-    from CCS once the message has been sent to the device.
-    <a href="{@docRoot}google/gcm/ccs.html#receipts">Learn more &raquo;</a></p>
-
-
-   <h4>Get Started</h4>
-    <p>Get started with a tutorial that walks you through creating a GCM app.
-    <a href="{@docRoot}google/gcm/gs.html">Learn more &raquo;</a></p>
-  </div>
-
-</div>
-
-
diff --git a/docs/html/google/gcm/notifications.jd b/docs/html/google/gcm/notifications.jd
deleted file mode 100644
index 333d4b6..0000000
--- a/docs/html/google/gcm/notifications.jd
+++ /dev/null
@@ -1,308 +0,0 @@
-page.title=User Notifications
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Quickview</h2>
-
-<ul>
-<li>Learn how to send a single message to multiple devices owned by a single user.</li>
-</ul>
-
-
-<h2>In this document</h2>
-
-<ol class="toc">
-  <li><a href="#gen-server">Generate a Notification Key on the Server</a></li>
-  <li><a href="#gen-client">Generate a Notification Key on the Client</a></li>
-  <li><a href="#add">Add Registration IDs</a></li>
-  <li><a href="#remove">Remove Registration IDs</a></li>
-  <li><a href="#upstream">Send Upstream Messages</a></li>
-  <li><a href="#response">Response Formats</a>
-    <ol class="toc">
-      <li><a href="#response-create">Create/add/remove operations</a>
-      <li><a href="#response-send">Send operations</a>
-    </ol>
-  </li>
-</ol>
-
-<h2>See Also</h2>
-
-<ol class="toc">
-<li><a href="{@docRoot}google/gcm/gs.html">Getting Started</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>With user notifications, 3rd-party app servers can send a single message to
-multiple instance of an app running on devices owned by a single user. This feature
-is called <em>user notifications</em>. User notifications make it possible for every
-app instance that a user owns to reflect the latest messaging state. For example:</p>
-
-  <ul>
-  <li>If a message has been handled on one device, the GCM message on the other
-devices are dismissed. For example, if a user has handled a calendar notification
-on one device, the notification will go away on the user's other devices.</li>
-
-  <li>If a message has not been delivered yet to a device and but it has been handled,
-the GCM server removes it from the unsent queue for the other devices.</li>
-
-  <li>Likewise, a device can send messages to the {@code notification_key}, which
-is the token that GCM uses to fan out notifications to all devices whose
-registration IDs are associated with the key.</li>
-</ul>
-
-<p>The way this works is that during registration, the 3rd-party server requests
-a {@code notification_key}. The {@code notification_key} maps a particular user
-to all of the user's associated registration IDs (a regID represents a particular
-Android application running on a particular device). Then instead of sending one
-message to one regID at a time, the 3rd-party server can send a message to to the
-{@code notification_key}, which then sends the message to all of the user's regIDs.</p>
-
-<p class="note"><strong>Note:</strong> A notification dismissal message is like any
-other upstream message, meaning that it will be delivered to the other devices that
-belong to the specified {@code notification_key}. You should design your app to
-handle cases where the app receives a dismissal message, but has not yet displayed
-the notification that is being dismissed. You can solve this by caching the dismissal
-and then reconciling it with the corresponding notification.
-</p>
-
-<p>You can use this feature with either the <a href="ccs.html">XMPP</a> (CCS) or
-<a href="http.html">HTTP</a> connection server.</p>
-
-<p>You can generate notification keys in two different ways: on the server, and on
-the client, if the user has a Google account. All of the associated registration IDs
-can be mapped to a single user.</p>
-
-<p>The examples below show you how to perform generate/add/remove operations,
-and how to send upstream messages. For generate/add/remove operations, the
-message body is JSON.</p>
-
-<h2 id="gen-server">Generate a Notification Key on the Server</h2>
-
-<p>To generate a notification key on the server, you create a new
-<code>notification_key</code> and map it to a
-<code>notification_key_name</code>.</p>
-
-<p>This example shows how to create a new <code>notification_key</code> for a
-<code>notification_key_name</code> called <code>appUser-Chris</code>.
-The {@code notification_key_name} is a name or identifier (it can be a username for
-a 3rd-party app) that is unique to a given user. It is used by third parties to
-group together registration IDs for a single user. Note that <code>notification_key_name</code>
-and <code>notification_key</code> are unique to a group of registration IDs. It is also
-important that <code>notification_key_name</code> be uniquely named per app in case
-you have multiple apps for the same project ID. This ensures that notifications
-only go to the intended target app.</p>
-
-
-<p>A create operation returns a token (<code>notification_key</code>). Third parties
-must save this token (as well as its mapping to the <code>notification_key_name</code>)
-to use in subsequent operations:</p>
-
-<pre>request:
-{ 
-   &quot;operation&quot;: &quot;create&quot;,
-   &quot;notification_key_name&quot;: &quot;appUser-Chris&quot;,
-   &quot;registration_ids&quot;: [&quot;4&quot;, &quot;8&quot;, &quot;15&quot;, &quot;16&quot;, &quot;23&quot;, &quot;42&quot;]
-}</pre>
-
-<h3 id="request-server">Request format</h3>
-
-<p>To send a message in cases where your notification key is generated on the server,
-the application server issues a POST request to
-<code>https://android.googleapis.com/gcm/notification</code>.</p>
-
-<p>Here is the HTTP request header you should use for all server side create/add/remove operations:</p>
-
-<pre>content-type: "application/json"
-Header : "project_id": &lt;projectID&gt;
-Header: "Authorization", "key=API_KEY"
-</pre>
-
-
-<h2 id="gen-client">Generate a Notification Key on the Client</h2>
-
-<p>Generating a notification key on the client is useful for cases where a server is unavailable.
-To generate a notification key on the client, the device must have at least one
-Google account. Note that the process for generating a notification key on the client is significantly
-different from the server process described above.</p>
-
-<p>To generate a notification key on the client:</p>
-
-<ol>
-  <li>Open your project in the <a href="https://cloud.google.com/console">Google Developers Console</a>.</li>
-  <li>Click <strong>APIS &amp; AUTH &gt; Credentials</strong>.</li>
-  <li>Under OAuth, click <strong>Create new Client ID</strong>.</li>
-  <li>In the <strong>Create Client ID</strong> dialog, select <strong>Web Application</strong> as
-the application type, and click <strong>Create Client ID</strong>.</li>
-  <li>Copy the value from <strong>Client ID for web application &gt; Client ID</strong>.
-This client ID represents a Google account "scope" that you will use to generate an {@code id_token}.</li>
-</ol>
-
-<p>Once you've followed the above steps and gotten a client ID from Google Developers Console,
- you're ready to add this feature to your app. First check the device for the presence of a Google
-account. For example:</p>
-
-<pre>// This snippet takes the simple approach of using the first returned Google account,
-// but you can pick any Google account on the device.
-public String getAccount() {
-    Account[] accounts = AccountManager.get(getActivity()).
-        getAccountsByType(&quot;com.google&quot;);
-    if (accounts.length == 0) {
-        return null;
-    }
-    return accounts[0].name;
-}</pre>
-
-<p>Next, get an authentication token ({@code id_token}) by using the <code><a href=
-"http://developer.android.com/reference/com/google/android/gms/auth/GoogleAuthUtil.html">GoogleAuthUtil</a></code>
-class. For example:</p>
-
-<pre>String accountName = getAccount();
-
-// Initialize the scope using the client ID you got from the Console.
-final String scope = &quot;audience:server:client_id:&quot;
-        + &quot;1262xxx48712-9qs6n32447mcj9dirtnkyrejt82saa52.apps.googleusercontent.com&quot;;
-String id_token = null;
-try {
-    id_token = GoogleAuthUtil.getToken(context, accountName, scope);
-} catch (Exception e) {
-    log(&quot;exception while getting id_token: &quot; + e);
-}
-...</pre>
-
-<p>Now use <code>id_token</code> to authenticate your request.
-This add operation returns a {@code notification_key}.
-Third parties must save this {@code notification_key} (as well as its mapping to the
-<code>notification_key_name</code>)
-to use in subsequent operations. Note that a client request only takes a single regID.
-The only operations supported on the client side are add/remove.</p>
-
-<pre>request:
-{
-   &quot;operation&quot;: &quot;add&quot;,
-   &quot;notification_key_name&quot;: &quot;appUser-Chris&quot;,
-   &quot;registration_ids&quot;: [&quot;4&quot;]
-   &quot;id_token&quot;: &quot;id_token&quot;
-}</pre>
-
-<h3 id="request-client">Request format</h3>
-
-<p>To send a message in cases where your notification key is generated on the client,
-the application server issues a POST request to
-<code>https://android.googleapis.com/gcm/googlenotification</code>.</p>
-
-<p>Here is the HTTP request header you should use for all add/remove operations. The
-client side doesn't support the create operation;
-the add operation has the effect of creating the notification key if it doesn't already
-exist:</p>
-
-<pre>content-type: "application/json"
-Header : "project_id": &lt;projectID&gt;
-</pre>
-
-<p>Note that the authentication token is passed in the JSON body as shown above, not the header.
-This is different from the server case.</p>
-
-
-<h2 id="add">Add Registration IDs</h2>
-
-<p>This example shows how to add registration IDs for a given notification key.
-The maximum number of members allowed for a {@code notification_key} is 20.</p>
-
-<p>Note that the <code>notification_key_name</code> is not strictly required for
-adding/removing regIDs. But including it protects you against accidentally using
-the incorrect <code>notification_key</code>.</p>
-
-<pre>request:
-{ 
-   &quot;operation&quot;: &quot;add&quot;,
-   &quot;notification_key_name&quot;: &quot;appUser-Chris&quot;,
-   &quot;notification_key&quot;: &quot;aUniqueKey&quot;
-   &quot;registration_ids&quot;: [&quot;4&quot;, &quot;8&quot;, &quot;15&quot;, &quot;16&quot;, &quot;23&quot;, &quot;42&quot;]
-}</pre>
-
-<h2 id="remove">Remove Registration IDs</h2>
-
-<p>This example shows how to remove registration IDs for a given notification key:</p>
-<pre>request:
-{ 
-   &quot;operation&quot;: &quot;remove&quot;,
-   &quot;notification_key_name&quot;: &quot;appUser-Chris&quot;,
-   &quot;notification_key&quot;: &quot;aUniqueKey&quot;
-   &quot;registration_ids&quot;: [&quot;4&quot;, &quot;8&quot;, &quot;15&quot;, &quot;16&quot;, &quot;23&quot;, &quot;42&quot;]
-}</pre>
-
-<h2 id="upstream">Send Upstream Messages</h2>
-
-<p>To send an upstream (device-to-cloud) message, you must use the
-<a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">
-{@code GoogleCloudMessaging}</a> API. Specifying a {@code notification_key} as the target
-for an upstream message allows a user on one device to send a message to other
-devices in the notification group&mdash;for example, to dismiss a notification.
-Here is an example that shows targeting a {@code notification_key}:</p>
-
-<pre>GoogleCloudMessaging gcm = GoogleCloudMessaging.get(context);
-String to = NOTIFICATION_KEY;
-AtomicInteger msgId = new AtomicInteger();
-String id = Integer.toString(msgId.incrementAndGet());
-Bundle data = new Bundle();
-data.putString("hello", "world");
-
-gcm.send(to, id, data);
-</pre>
-
-<p>This call generates the necessary XMPP stanza for sending the message. The
-Bundle data consists of a key-value pair.</p>
-
-<p>For a complete example, see <a href="client.html">Implementing GCM Client</a>.
-
-<h2 id="response">Response Formats</h2>
-
-<p>This section shows examples of the responses that can be returned for
-notification key operations.</p>
-
-<h3 id="response-create">Create/add/remove operations</h3>
-
-<p>When you make a request to create a {@code notification_key} or to add/remove its
-regIDs, a successful response always returns the <code>notification_key</code>.
-Use the returned {@code notification_key} for sending messages:</p>
-
-<pre>HTTP status: 200
-{ 
-    &quot;notification_key&quot;: &quot;aUniqueKey&quot;,   // to be used for sending
-}</pre>
-
-
-<h3 id="response-send">Send operations</h3>
-
-<p>For a send operation that has a {@code notification_key} as its target, the
-possible responses are success, partial success, and failure.</p>
-
-<p>Here is an example of "success"&mdash;the {@code notification_key} has 2 regIDs
-associated with it, and the message was successfully sent to both of them:</p>
-
-<pre>{
-  "success": 2,
-  "failure": 0
-}</pre>
-
-<p>Here is an example of "partial success"&mdash;the {@code notification_key} has
-3 regIDs associated with it. The message was successfully send to 1 of the regIDs,
-but not to the other 2. The response message lists the regIDs that failed to
-receive the message:</p>
-
-<pre>{
-  "success":1,
-  "failure":2,
-  "failed_registration_ids":[
-     "regId1",
-     "regId2"
-  ]
-}</pre>
-
-<p>In the case of failure, the response has HTTP code 503 and no JSON. When a message
-fails to be delivered to one or more of the regIDs associated with a {@code notification_key},
-the 3rd-party server should retry.</p>
diff --git a/docs/html/google/gcm/server-ref.jd b/docs/html/google/gcm/server-ref.jd
deleted file mode 100644
index 2a41e58..0000000
--- a/docs/html/google/gcm/server-ref.jd
+++ /dev/null
@@ -1,764 +0,0 @@
-page.title=Server Reference
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>In this document</h2>
-
-<ol class="toc">
-  <li><a href="#downstream">Downstream Messages</a></li>
-<ol class="toc">
-      <li><a href="#send-downstream">Sending a downstream message</a></li>
-      <li><a href="#interpret-downstream">Interpreting a downstream message response</a></li>
-    </ol>
-  <li><a href="#upstream">Upstream Messages (XMPP)</a>
-    <ol class="toc">
-      <li><a href="#interpret-upstream">Interpreting an upstream XMPP message</a></li>
-      <li><a href="#upstream-response">Sending an upstream XMPP message response</a></li>
-    </ol>
-  </li>
-<li><a href="#ccs">Cloud Connection Server Messages (XMPP)</a></li>
-<li><a href="#error-codes">Downstream message error response codes (HTTP and XMPP)</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>This document provides a reference for the syntax used to pass
-messages back and forth in GCM. These messages fall into
-the following broad categories:</p>
-
-<ul>
-   <li><a href="#downstream">Downstream messages</a></li>
-   <li><a href="#upstream">Upstream messages</a></li>
-   <li><a href="#ccs">Cloud Connection Server messages (XMPP)</a></li>
-   <li><a href="#error-codes">Downstream message error response codes (HTTP and XMPP)</a></li>
-</ul>
-
-<p>The following sections describe the basic requirements for
-sending messages.</p>
-
-<h2 id="downstream">Downstream Messages</h2>
-<p>This is the message that a 3rd-party app server sends to a client app.
-</p>
-<p>A downstream message includes the following components:</p>
-<ul>
-  <li>Target: specifies the recipient of the message.</li>
-  <li>Options: specifies attributes of the message.</li>
-  <li>Payload: specifies additional content to be included in the message. Optional.</li>
-</ul>
-
-<p>The syntax for each of these components is described in the tables below. </p>
-
-<h3 id="send-downstream">Sending a downstream message</h3>
-
-<p>This section gives the syntax for sending a downstream messages. For JSON,
-these messages can be either HTTP or XMPP. For plain text, these messages can only be HTTP.</p>
-
-<h4>Downstream HTTP or XMPP messages (JSON)</h4>
-
-<p>The following table lists the targets, options, and payload for HTTP or XMPP JSON messages.</p>
-<p class="table-caption" id="table1">
-  <strong>Table 1.</strong> Targets, options, and payload for downstream HTTP or XMPP message (JSON).</p>
-<table border="1">
-  <tr>
-    <th>Parameter</th>
-    <th>Protocol</th>
-    <th>Usage</th>
-    <th>Description</th>
-  </tr>
-<tr>
-    <td colspan="4"><strong>Targets</strong></td>
-  </tr>
-  <tr>
-    <td><code>to</code></td>
-    <td>XMPP</td>
-    <td>Required, string</td>
-    <td><p>This parameter specifies the recipient of a message. </p>
-      <p>The value must be a registration ID or notification key.</p>
-    <p>This parameter is used in XMPP in place of {@code registration_ids} or   {@code notification_key} in HTTP.</p></td>
-  </tr>
-  <tr>
-    <td><code>registration_ids</code></td>
-    <td>HTTP</td>
-    <td>Required if {@code notification_key} not present, string array</td>
-    <td><p>This parameter specifies the list of devices (registration IDs)
-receiving the message. It must contain at least 1 and at most 1000 registration IDs.</p>
-      <p>Multicast messages (sending to more than 1 registration IDs) are allowed using HTTP JSON format only.</p>
-    <p>This parameter or {@code notification_key} is used in HTTP in place of {@code to} in XMPP.</p></td>
-  </tr>
-  <tr>
-    <td><code>notification_key</code></td>
-    <td>HTTP</td>
-    <td>Required if {@code registration_ids} not present, string</td>
-    <td><p>This parameter specifies the mapping of a single user to
-multiple registration IDs associated with that user.</p>
-      <p>This allows a 3rd-party app server to send a single message to multiple app instances
-(typically on multiple devices) owned by a single user.</p>
-      <p>A 3rd-party app server can use {@code notification_key} as the target for a
-message instead of an individual registration ID (or array of registration IDs).
-The maximum number of members allowed for a {@code notification_key} is 20.</p>
-      <p>This parameter or {@code registration_ids} is used in HTTP in place of {@code to} in XMPP.</p>
-    <p>See <a href="notifications.html">User Notifications</a> for details.</p></td>
-  </tr>
-<tr>
-    <td colspan="4"><strong>Options</strong></td>
-  </tr>
-  <tr>
-    <td><code>message_id</code></td>
-    <td>XMPP</td>
-    <td>Required, string</td>
-    <td><p>This parameter uniquely identifies a message in an XMPP connection.</p></td>
-  </tr>
-  <tr>
-    <td><code>collapse_key</code></td>
-    <td>HTTP, XMPP</td>
-    <td>Optional, string</td>
-    <td><p>This parameters identifies a group of messages (e.g., with
-{@code collapse_key: "Updates Available"}) that can be collapsed, so that only the
-last message gets sent when delivery can be resumed. This is intended to avoid sending too
-many of the same messages when the device comes back online or becomes active (see {@code delay_while_idle}).</p>
-      <p>Note that there is no guarantee of the order in which messages get sent.</p>
-      <p>Messages with collapse key are also called
-<a href="{@docRoot}google/gcm/server.html#s2s">send-to-sync messages</a> messages.
-</p>
-    <p>Note: A maximum of 4 different collapse keys is allowed at any given time. This means a
-GCM connection server can simultaneously store 4 different send-to-sync messages per client app. If you
-exceed this number, there is no guarantee which 4 collapse keys the GCM connection server will keep. </p></td>
-  </tr>
-  <tr>
-    <td><code>delay_while_idle</code></td>
-    <td>HTTP, XMPP</td>
-    <td>Optional, JSON boolean</td>
-    <td>When this parameter is set to {@code true}, it indicates that the message should not be
-sent until the device becomes active.</p>
-    <p>The default value is {@code false}.</p></td>
-  </tr>
-  <tr>
-    <td><code>time_to_live</code></td>
-    <td>HTTP, XMPP</td>
-    <td>Optional, JSON number</td>
-    <td><p>This parameter specifies how long (in seconds) the message should be kept in GCM storage
-if the device is offline. The maximum time to live supported is 4 weeks.</p>
-    <p>The default value is 4 weeks. </p></td>
-  </tr>
-  <tr>
-    <td><code>delivery_receipt_
-<br>requested</code></td>
-    <td>XMPP</td>
-    <td>Optional, JSON boolean</td>
-    <td><p>This parameter lets 3rd-party app server request confirmation of message delivery.</p>
-      <p>When this parameter is set to {@code true}, CCS sends a delivery receipt
-when the device confirms that it received the message.</p>
-    <p>The default value is {@code false}.</p></td>
-  </tr>
-  <tr>
-    <td><code>restricted_package_
-<br>name</code></td>
-    <td>HTTP</td>
-    <td>Optional, string</td>
-    <td>This parameter specifies the package name of the application where the
-registration IDs must match in order to receive the message.</td>
-  </tr>
-  <tr>
-    <td><code>dry_run</code></td>
-    <td>HTTP</td>
-    <td>Optional, JSON boolean</td>
-    <td><p>This parameter, when set to {@code true}, allows developers to test a
-request without actually sending a message.</p>
-    <p>The default value is {@code false}.</p></td>
-  </tr>
-<tr>
-    <td colspan="4"><strong>Payload</strong></td>
-  </tr>
-  <tr>
-    <td><code>data</code></td>
-    <td>HTTP, XMPP</td>
-    <td>Optional, JSON object</td>
-    <td><p>This parameter specifies the key-value pairs of the message's payload. There is
-no limit on the number of key-value pairs, but there is a total message size limit of 4kb.</p>
-      <p>For instance, in Android, <code>data:{"score":"3x1"}</code> would result in an intent extra
-named {@code score} with the string value {@code 3x1}.</p>
-      <p>The key should not be a reserved word ({@code from} or any word starting with
-{@code google}). It is also not recommended to use words defined in this table
-(such as {@code collapse_key}) because that could yield unpredictable outcomes. </p>
-    <p>Values in string types are recommended. You have to convert values in objects
-or other non-string data types (e.g., integers or booleans) to string.</p></td>
-  </tr>
-</table>
-
-<h3>Downstream HTTP messages (Plain Text)</h3>
-
-<p>The following table lists the syntax for targets, options, and payload in plain
-text downstream HTTP messages.</p>
-
-<p class="table-caption" id="table2">
-  <strong>Table 2.</strong> Targets, options, and payload for downstream plain text HTTP messages.</p>
-
-<table border="1">
-  <tr>
-    <th>Parameter</th>
-    <th>Usage</th>
-    <th>Description</th>
-  </tr>
-<tr>
-    <td colspan="3"><strong>Targets</strong></td>
-  </tr>
-  <tr>
-    <td><code>registration _id</code></td>
-    <td>Required, string</td>
-    <td><p>This parameter specifies the client apps (registration ID) receiving the message.</p>
-    <p>Multicast messaging (sending to more than one registration ID) is allowed using HTTP JSON format only.</p></td>
-  </tr>
-<tr>
-    <td colspan="3"><strong>Options</strong></td>
-  </tr>
-  <tr>
-    <td><code>collapse_key</code></td>
-    <td>Optional, string</td>
-    <td>See <a href="#table1">table 1</a> for details.</td>
-  </tr>
-  <tr>
-    <td><code>delay_while_idle</code></td>
-    <td>Optional, boolean or number</td>
-    <td>See <a href="#table1">table 1</a> for details.</td>
-  </tr>
-  <tr>
-    <td><code>time_to_live</code></td>
-    <td>Optional, number</td>
-    <td>See <a href="#table1">table 1</a> for details.</td>
-  </tr>
-  <tr>
-    <td><code>restricted_package_name</code></td>
-    <td>Optional, string</td>
-    <td>See <a href="#table1">table 1</a> for details.</td>
-  </tr>
-  <tr>
-    <td><code>dry_run </code></td>
-    <td>Optional, boolean</td>
-    <td>See <a href="#table1">table 1</a> for details.</td>
-  </tr>
-<tr>
-    <td colspan="3"><strong>Payload</strong></td>
-  </tr>
-  <tr>
-    <td><code>data.&lt;key&gt;</code></td>
-    <td>Optional, string</td>
-    <td><p>This parameter specifies the key-value pairs of the message's payload.
-There is no limit on the number of key-value parameters,
-but there is a total message size limit of 4kb.</p>
-      <p>For instance, in Android, <code>data:{"score":"3x1"}</code> would result in an intent extra
-named {@code score} with the string value {@code 3x1}.</p>
-    <p>The key should not be a reserved word ({@code from} or any word starting with
-{@code google}). It is also not recommended to use words defined in this table
-(such as {@code collapse_key}) because that could yield unpredictable outcomes.</p></td>
-  </tr>
-</table>
-
-<h3 id="interpret-downstream">Interpreting a Downstream Message Response</h3>
-
-<p>This section describes the syntax of a response to a downstream message. A client
-app or the GCM Connection Server sends the response to 3rd-party app server upon processing
-the message request. </p>
-
-<h4>Interpreting a downstream HTTP message response </h4>
-<p>The 3rd-party app server should look at both the message response header and the body
-to interpret the message response sent from the GCM Connection Server. The following table
-describes the possible responses.</p>
-<p>
-
-<p class="table-caption" id="table3">
-  <strong>Table 3.</strong> Downstream HTTP message response header.</p>
-<table border=1>
-  <tr>
-    <th>Response</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td>200</td>
-    <td>Message was processed successfully. The response body will contain more
-details about the message status, but its format will depend whether the request
-was JSON or plain text. See <a href="#table4">table 4</a>
-for more details.</td>
-  </tr>
-  <tr>
-    <td>400</td>
-    <td>Only applies for JSON requests.
-Indicates that the request could not be parsed as JSON, or it contained invalid
-fields (for instance, passing a string where a number was expected). The exact
-failure reason is described in the response and the problem should be addressed
-before the request can be retried.</td>
-  </tr>
-  <tr>
-    <td>401</td>
-    <td>There was an error authenticating the sender account.
-<a href="server.html#auth_error">Troubleshoot</a></td>
-  </tr>
-  <tr>
-    <td>5xx</td>
-    <td>Errors in the 500-599 range (such as 500 or 503) indicate that there was
-an internal error in the GCM server while trying to process the request, or that
-the server is temporarily unavailable (for example, because of timeouts). Sender
-must retry later, honoring any <code>Retry-After</code> header included in the
-response. Application servers must implement exponential back-off.
-<a href="server.html#internal_error">Troubleshoot</a></td>
-  </tr>
-</table>
-
-<p>The following table lists the fields in a downstream message response body
-(JSON).</p>
-
-
-<p class="table-caption" id="table4">
-  <strong>Table 4.</strong> Downstream HTTP message response body (JSON).</p>
-<table>
-  <tr>
-    <th>Parameter</th>
-    <th>Usage</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td><code>multicast_id</code></td>
-    <td>Required, number</td>
-    <td>Unique ID (number) identifying the multicast message.</td>
-  </tr>
-  <tr>
-    <td><code>success</code></td>
-    <td>Required, number</td>
-    <td>Number of messages that were processed without an error.</td>
-  </tr>
-  <tr>
-    <td><code>failure</code></td>
-    <td>Required, number</td>
-    <td>Number of messages that could not be processed.</td>
-  </tr>
-  <tr>
-    <td><code>canonical_ids</code></td>
-    <td>Required, number</td>
-    <td>Number of results that contain a canonical registration ID. See the
-<a href="{@docRoot}google/gcm/gcm.html#canonical">Overview</a> for more discussion of this topic.</td>
-  </tr>
-  <tr>
-    <td><code>results</code></td>
-    <td>Optional, array object</td>
-    <td>Array of objects representing the status of the messages processed. The
-objects are listed in the same order as the request (i.e., for each registration
-ID in the request, its result is listed in the same index in the response).<br>
-      <ul>
-        <li><code>message_id</code>: String specifying a unique ID for each successfully processed
-          message.</li>
-        <li><code>registration_id</code>: Optional string specifying the canonical registration ID
-          for the client app that the message was processed and sent to. Sender should use this
-          value as the Registration ID for future requests. Otherwise, the messages might
-          be rejected.
-        </li>
-        <li><code>error</code>: String specifying the error that occurred when processing the
-          message for the recipient. The possible values can be found in <a href="#table11">table 11
-        </a>.</li>
-    </ul></td>
-  </tr>
-</table>
-
-
-<p class="table-caption" id="table5">
-  <strong>Table 5.</strong> Success response for downstream HTTP message response body (Plain Text).</p>
-<table border="1">
-  <tr>
-    <th>Parameter</th>
-    <th>Usage</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td><code>id</code></td>
-    <td>Required, string</td>
-    <td>This parameter specifies the unique message ID that GCM server processed successfully.</td>
-  </tr>
-  <tr>
-    <td><code>registration_id</code></td>
-    <td>Optional, string</td>
-    <td>This parameter specifies the canonical registration ID for the client app that the message was
-processed and sent to. Sender should replace the registration ID with this value on future requests,
-otherwise, the messages might be rejected.</td>
-  </tr>
-</table>
-
-<p class="table-caption" id="table6">
-  <strong>Table 6.</strong> Error response for downstream HTTP message response body (Plain Text).</p>
-<table border="1">
-  <tr>
-    <th>Parameter</th>
-    <th>Usage</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td>{@code Error}</td>
-    <td>Required, string</td>
-    <td>This parameter specifies the error value while processing the message for the recipient.
-See <a href="#table11">table 11</a> for details. </td>
-  </tr>
-</table>
-
-<h4>Interpreting a downstream XMPP message response</h4>
-
-<p>The following table lists the fields that appear in a downstream XMPP message response.</p>
-
-<p class="table-caption" id="table7">
-  <strong>Table 7.</strong> Downstream message XMPP message response body.</p>
-<table border="1">
-  <tr>
-    <th>Parameter</th>
-    <th>Usage</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td><code>from</code></td>
-    <td>Required, string</td>
-    <td><p>This parameter specifies who sent this response.</p>
-    <p>The value is the registration ID of the client app.</p></td>
-  </tr>
-  <tr>
-    <td><code>message_id</code></td>
-    <td>Required, string</td>
-    <td>This parameter uniquely identifies a message in an XMPP connection.
-The value is a string that uniquely identifies the associated message.</td>
-  </tr>
-  <tr>
-    <td><code>message_type</code></td>
-    <td>Required, string</td>
-    <td><p>This parameter specifies an 'ack' or 'nack' message from XMPP (CCS)
-to the 3rd-party app server.</p>
-    <p>If the value is set to {@code nack}, the 3rd-party app server should look at
-{@code error} and {@code error_description} to get failure information. </p></td>
-  </tr>
-  <tr>
-    <td><code>error</code></td>
-    <td>Optional, string</td>
-    <td>This parameter specifies an error related to the downstream message. It is set when the
-{@code message_type} is {@code nack}. See <a href="#table11">table 6</a> for details.</td>
-  </tr>
-  <tr>
-    <td><code>error_description</code></td>
-    <td>Optional, string</td>
-    <td>This parameter provides descriptive information for the error. It is set
-when the {@code message_type} is {@code nack}.</td>
-  </tr>
-</table>
-<h2 id="upstream">Upstream Messages (XMPP)</h2>
-
-<p>An upstream message is a message the client app sends to the 3rd-party app server.
-Currently only CCS (XMPP) supports upstream messaging.</p>
-
-<h3 id="interpret-upstream">Interpreting an upstream XMPP message </h3>
-<p>The following table describes the fields that appear in an upstream XMPP message.
-
-<p class="table-caption" id="table8">
-  <strong>Table 8.</strong> Upstream XMPP messages.</p>
-<table border="1">
-  <tr>
-    <th>Parameter</th>
-    <th>Usage</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td><code>from</code></td>
-    <td>Required, string</td>
-    <td><p>This parameter specifies who sent the message.</p>
-    <p>The value is the registration ID of the client app.</p></td>
-  </tr>
-  <tr>
-    <td><code>category</code></td>
-    <td>Required, string</td>
-    <td>This parameter specifies the application package name of the client app that sent the message. </td>
-  </tr>
-  <tr>
-    <td><code>message_id</code></td>
-    <td>Required, string</td>
-    <td>This parameter specifies the unique ID of the message. </td>
-  </tr>
-  <tr>
-    <td><code>data</code></td>
-    <td>Optional, string</td>
-    <td>This parameter specifies the key-value pairs of the message's payload.</td>
-  </tr>
-</table>
-
-<h3 id="upstream-response">Sending an upstream XMPP message response</h3>
-
-<p>The following table describes the response that 3rd-party app server is expected to send to
-<a href="{@docRoot}google/gcm/ccs.html">XMPP (CCS)</a> in response to an
-upstream message it (the app server) received.</p>
-
-<p class="table-caption" id="table9">
-  <strong>Table 9.</strong> Upstream XMPP message response.</p>
-<table border="1">
-  <tr>
-    <th>Parameter</th>
-    <th>Usage</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td><code>to</code></td>
-    <td>Required, string</td>
-    <td><p>This parameter specifies the recipient of a response message. </p>
-    <p>The value must be a registration ID of the client app that sent the upstream message.</p></td>
-  </tr>
-  <tr>
-    <td><code>message_id</code></td>
-    <td>Required, string</td>
-    <td>This parameter specifies which message the response is intended for. The value must be
-the {@code message_id} value from the corresponding upstream message.</td>
-  </tr>
-  <tr>
-    <td><code>message_type</code></td>
-    <td>Required, string</td>
-    <td>This parameter specifies an {@code ack} message from a 3rd-party app server to CCS.</td>
-  </tr>
-</table>
-<h2 id="ccs">Cloud Connection Server Messages (XMPP) </h2>
-<p>This is a message sent from XMPP (CCS) to a 3rd-party app server. Here are the primary types
-of messages that XMPP (CCS) sends to the 3rd-party app server:</p>
-<ul>
-  <li><strong>Delivery Receipt:</strong> If the 3rd-party app server included {@code delivery_receipt_requested}
-in the downstream message, XMPP (CCS) sends a delivery receipt when it receives confirmation
-that the device received the message.</li>
-  <li><strong>Control:</strong> These CCS-generated messages indicate that
-action is required from the 3rd-party app server.</li>
-</ul>
-
-<p>The following table describes the fields included in the messages CCS
-sends to a 3rd-party app server.</p>
-
-<p class="table-caption" id="table10">
-  <strong>Table 10.</strong> GCM Cloud Connection Server messages (XMPP).</p>
-<table border="1">
-  <tr>
-    <th>Parameter</th>
-    <th>Usage</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td colspan="3"><strong>Common Field</strong></td>
-  </tr>
-  <tr>
-    <td><code>message_type</code></td>
-    <td>Required, string</td>
-    <td><p>This parameter specifies the type of the CCS message: either delivery receipt or control.</p>
-      <p>When it is set to {@code receipt}, the message includes {@code from}, {@code message_id},
-        {@code category} and {@code data} fields to provide additional information.</p>
-    <p>When it is set to {@code control}, the message includes {@code control_type} to indicate the
-type of control message.</p></td>
-  </tr>
-  <tr>
-    <td colspan="3"><strong>Delivery receipt-specific</strong></td>
-  </tr>
-  <tr>
-    <td><code>from</code></td>
-    <td>Required, string</td>
-    <td>This parameter is set to {@code gcm.googleapis.com}, indicating that the
-message is sent from CCS.</td>
-  </tr>
-  <tr>
-    <td><code>message_id</code></td>
-    <td>Required, string</td>
-    <td>This parameter specifies the original message ID that the receipt is intended for,
-prefixed with {@code dr2:} to indicate that the message is a delivery receipt. A 3rd-party app
-server must send an {@code ack} message with this message ID to acknowledge that it
-received this delivery receipt. See <a href="#table9">table 9</a> for the 'ack' message format.</td>
-  </tr>
-  <tr>
-    <td><code>category</code></td>
-    <td>Optional, string</td>
-    <td>This parameter specifies the application package name of the client app that
-receives the message that this delivery receipt is reporting. This is available when
-{@code message_type} is {@code receipt}.</td>
-  </tr>
-  <tr>
-    <td><code>data</code></td>
-    <td>Optional, string</td>
-    <td>This parameter specifies the key-value pairs for the delivery receipt message. This is available
-when the {@code message_type} is {@code receipt}.
-      <ul>
-        <li>{@code message_status}: This parameter specifies the status of the receipt message.
-It is set to {@code MESSAGE_SENT_TO_DEVICE} to indicate the device has confirmed its receipt of
-the original message.</li>
-      <li>{@code original_message_id}: This parameter specifies the ID of the original message
-that the 3rd-party app server sent to the client app.</li>
-     <li>{@code device_registration_id}: This parameter specifies the registration ID of the
-client app to which the original message was sent.</li>
-    </ul>
-</td>
-  </tr>
-  <tr>
-    <td colspan="3"><strong>Control-specific</strong></td>
-  </tr>
-  <tr>
-    <td><code>control_type</code></td>
-    <td>Optional, string</td>
-    <td><p>This parameter specifies the type of control message sent from CCS.</p>
-    <p>Currently, only {@code CONNECTION_DRAINING} is supported. XMPP (CCS) sends this control message
-before it closes a connection to perform load balancing. As the connection drains, no more messages
-are allowed to be sent to the connection, but existing messages in the pipeline will
-continue to be processed.</p></td>
-  </tr>
-</table>
-
-<h2 id="error-codes">Downstream message error response codes (HTTP and XMPP)</h2>
-
-<p>The following table lists the error response codes for downstream messages (HTTP and XMPP).</p>
-
-<p class="table-caption" id="table11">
-  <strong>Table 11.</strong> Downstream message error response codes.</p>
-<table border="1">
-  <tr>
-    <th>Error</th>
-    <th>HTTP Code</th>
-    <th>XMPP Code</th>
-    <th>Recommended Action</th>
-  </tr>
-  <tr>
-    <td>Missing Registration ID</td>
-    <td>200 + error:MissingRegistration</td>
-    <td><code>INVALID_JSON</code></td>
-    <td>Check that the request contains a registration ID (either in the
-{@code registration_id} in a plain text message, or in the {@code registration_ids} in JSON).</td>
-  </tr>
-  <tr>
-    <td>Invalid Registration ID</td>
-    <td>200 + error:InvalidRegistration</td>
-    <td><code>BAD_REGISTRATION</code></td>
-    <td>Check the format of the registration ID you pass to the server. Make sure it
-matches the registration ID the client app receives from registering with GCM. Do not
-truncate or add additional characters.</td>
-  </tr>
-  <tr>
-    <td>Unregistered Device</td>
-    <td>200 + error:NotRegistered</td>
-    <td><code>DEVICE_UNREGISTERED</code></td>
-    <td>An existing registration ID may cease to be valid in a number of scenarios, including:<br>
-     <ul>
-      <li>If the client app unregisters with GCM.</li>
-      <li>If the client app is automatically unregistered, which can happen if the user uninstalls the application.</li>
-      <li>If the registration ID expires (for example, Google might decide to refresh registration IDs).</li>
-      <li>If the client app is updated but the new version is not configured to receive messages.</li>
-</ul>
- For all these cases, remove this registration ID from the 3rd-party app
-server and stop using it to send messages.</td>
-  </tr>
-  <tr>
-    <td>Invalid Package Name</td>
-    <td>200 + error:InvalidPackageName</td>
-    <td></td>
-    <td>Make sure the message was addressed to a registration ID whose package name
-matches the value passed in the request.</td>
-  </tr>
-  <tr>
-    <td>Authentication Error</td>
-    <td>401</td>
-    <td>&nbsp;</td>
-    <td>The sender account used to send a message couldn't be authenticated. Possible causes are:<br>
-<ul>
-      <li>Authorization header missing or with invalid syntax in HTTP request.</li>
-      <li>Invalid project number sent as key.</li>
-      <li>Key valid but with GCM service disabled.</li>
-      <li>Request originated from a server not whitelisted in the Server Key IPs.</li>
-</ul>
-    Check that the token you're sending inside the Authentication header is
-the correct API key associated with your project. See
-<a href="{@docRoot}google/gcm/http.html#checkAPIkey">Checking the validity of an API Key
-</a> for details.</td>
-  </tr>
-  <tr>
-    <td>Mismatched Sender</td>
-    <td>200 + error:MismatchSenderId</td>
-    <td><code>BAD_REGISTRATION</code></td>
-    <td>A registration ID is tied to a certain group of senders. When a client app registers
-for GCM, it must specify which senders are allowed to send messages. You should use one
-of those sender IDs when sending messages to the client app. If you switch to a different
-sender, the existing registration IDs won't work.</td>
-  </tr>
-  <tr>
-    <td>Invalid JSON</td>
-    <td>400</td>
-    <td><code>INVALID_JSON</code></td>
-    <td>Check that the JSON message is properly formatted and contains valid fields
-(for instance, making sure the right data type is passed in).</td>
-  </tr>
-  <tr>
-    <td>Message Too Big</td>
-    <td>200 + error:MessageTooBig</td>
-    <td><code>INVALID_JSON</code></td>
-    <td>Check that the total size of the payload data included in a message does
-not exceed 4096 bytes. This includes both the the keys and the values.</td>
-  </tr>
-  <tr>
-    <td>Invalid Data Key</td>
-    <td>200 + error:
-<br />
-InvalidDataKey</td>
-    <td><code>INVALID_JSON</code></td>
-    <td>Check that the payload data does not contain a key (such as {@code from} or any value
-prefixed by {@code google}) that is used internally by GCM. Note that some words (such as {@code collapse_key})
-are also used by GCM but are allowed in the payload, in which case the payload value
-will be overridden by the GCM value.</td>
-  </tr>
-  <tr>
-    <td>Invalid Time to Live</td>
-    <td>200 + error:InvalidTtl</td>
-    <td><code>INVALID_JSON</code></td>
-    <td>Check that the value used in {@code time_to_live} is an integer representing a
-duration in seconds between 0 and 2,419,200 (4 weeks).</td>
-  </tr>
-  <tr>
-    <td>Bad ACK message</td>
-    <td>N/A</td>
-    <td><code>BAD_ACK</code></td>
-    <td>Check that the 'ack' message is properly formatted before retrying. See
-<a href="#table9">table 9</a> for details.</td>
-  </tr>
-  <tr>
-    <td>Timeout</td>
-    <td>5xx or 200 + error:Unavailable</td>
-    <td><code>SERVICE_UNAVAILABLE</code></td>
-    <td><p>The server couldn't process the request in time. Retry the same request, but you must:<br>
-<ul>
-      <li>For HTTP: Honor the {@code Retry-After} header if it is included in the response from the
-GCM Connection Server.</li>
-      <li>Implement exponential back-off in your retry mechanism. (e.g. if you waited one second
-before the first retry, wait at least two second before the next one, then 4 seconds and so on).
-If you're sending multiple messages, delay each one independently by an additional random amount
-to avoid issuing a new request for all messages at the same time.</li>
-    <li>For CCS: The initial retry delay should be set to 1 second.</li>
-</ul>
-    <p>Senders that cause problems risk being blacklisted.</p></td>
-  </tr>
-  <tr>
-    <td>Internal Server Error</td>
-    <td>500 or 200 + error:InternalServerError</td>
-    <td><code>INTERNAL_SERVER_
-<br />
-ERROR</code></td>
-    <td>The server encountered an error while trying to process the request. You could retry
-the same request following the requirements listed in "Timeout" (see row above). If the error persists, please
-report the problem in the {@code android-gcm group}.</td>
-  </tr>
-  <tr>
-    <td>Device Message Rate Exceeded</td>
-    <td>200 + error:
-<br />DeviceMessageRate
-<br />
-Exceeded</td>
-    <td><code>DEVICE_MESSAGE_RATE<br />
-_EXCEEDED</code></td>
-    <td>The rate of messages to a particular device is too high. Reduce the
-number of messages sent to this device and do not immediately retry sending to this device.</td>
-  </tr>
-  <tr>
-    <td>Connection Draining</td>
-    <td>N/A</td>
-    <td><code>CONNECTION_DRAINING</code></td>
-    <td>The message couldn't be processed because the connection is draining. This happens because
-periodically, XMPP (CCS) needs to close down a connection to perform load balancing. Retry the message over
-another XMPP connection.</td>
-  </tr>
-</table>
diff --git a/docs/html/google/gcm/server.jd b/docs/html/google/gcm/server.jd
deleted file mode 100644
index 004fd0e..0000000
--- a/docs/html/google/gcm/server.jd
+++ /dev/null
@@ -1,440 +0,0 @@
-page.title=Implementing GCM Server
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>In this document</h2>
-
-<ol class="toc">
-  <li><a href="#role">Role of the 3rd-party Application Server</a></li>
-  <li><a href="#choose">Choosing a GCM Connection Server</a></li>
-  <li><a href="#send-msg">Sending Messages</a>
-    <ol class="toc">
-
-      <li><a href="#target">Target</a></li>
-      <li><a href="#payload">Payload</a></li>
-      <li><a href="#params">Message parameters</a>
-    </ol>
-    </li>
-  <li><a href="#adv">Messaging Concepts and Best Practices</a>
-
-   <ol class="toc">
-
-      <li><a href="#collapsible">Send-to-Sync vs. Messages with Payload</a></li>
-      <li><a href="#ttl">Setting an Expiration Date for a Message</a></li>
-      <li><a href="#multi-senders">Receiving Messages from Multiple Senders</a>
-      <li><a href="#lifetime">Lifetime of a Message</a>
-      <li><a href="#throttling">Throttling</a>
-    </ol>
-
-</li>
-  </li>
-
-</ol>
-
-<h2>See Also</h2>
-
-<ol class="toc">
-<li><a href="server-ref.html">Server Reference</a></li>
-<li><a href="gs.html">Getting Started</a></li>
-<li><a href="client.html">Implementing GCM Client</a></li>
-<li><a href="ccs.html">Cloud Connection Server (XMPP)</a></li>
-<li><a href="http.html">HTTP Connection Server</a></li>
-
-
-</ol>
-
-</div>
-</div>
-
-
-<p>The server side of Google Cloud Messaging (GCM) consists of two components:</p>
-<ul>
-<li>Google-provided <strong>GCM Connection Servers</strong>
-take messages from a <a href="{@docRoot}google/gcm/server.html#role">3rd-party app server</a>
-and send them to a GCM-enabled
-application (the &quot;client app&quot;) running on a device. For example,
-Google provides connection servers for <a href="{@docRoot}google/gcm/http.html">
-HTTP</a> and <a href="{@docRoot}google/gcm/ccs.html">XMPP (CCS)</a> (XMPP).</li>
-<li>A <strong>3rd-party application server</strong> that you must implement. This application
-server sends data to a GCM-enabled client app via the chosen GCM connection server.</li>
-</ul>
-</p>
-
-<p>A full GCM implementation requires both a client implementation and a server
-implementation. For more
-information about implementing the client side, see <a href="client.html">
-Implementing GCM Client</a>.</p>
-
-
-<h2 id="role">Role of the 3rd-party Application Server</h2>
-
-<p>Before you can write client apps that use the GCM feature, you must
-have an  application server that meets the following criteria:</p>
-
-<ul>
-  <li>Able to communicate with your client.</li>
-  <li>Able to  fire off properly formatted requests to the GCM server.</li>
-  <li>Able to handle requests and resend them as needed, using
-<a href="http://en.wikipedia.org/wiki/Exponential_backoff">exponential back-off.</a></li>
-  <li>Able to store the API key and client registration IDs. In HTTP, the API key is
-included in the header of POST requests that send messages. In XMPP, the API key is
-used in the SASL PLAIN authentication request as a password to authenticate the connection.</li>
- <li>Able to generate message IDs to uniquely identify each message it sends. Message IDs
-should be unique per sender ID.</li>
-</ul>
-
-<p>Here are the basic steps you follow to implement your 3rd-party app server:</p>
-
-<ul>
-      <li>Decide which GCM connection server(s) you want to use. Note that if you want to use
-      upstream messaging from your client applications, you must use XMPP (CCS). For a more detailed
-      discussion of this, see <a href="#choose">
-      Choosing a GCM Connection Server</a>.</li>
-      <li>Decide how you want to implement your app server. We provide helper libraries and code
-samples to assist you with your 3rd-party app server implementation. For example:
-        <ul>
-          <li>If you decide to use the HTTP connection server, you can use the
-GCM server helper library and demo app to help in implementing your app server.</li>
-          <li>If you decide to use the XMPP connection server, you can use
-the provided Python or Java <a href="http://www.igniterealtime.org/projects/smack/">
-Smack</a> demo apps as a starting point.</li>
-        <li>Note that Google AppEngine does not support connections to XMPP (CCS).</li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-</ul>
-
-
-<h2 id="choose">Choosing a GCM Connection Server</h2>
-
-<p>Currently GCM provides two connection servers: <a href="{@docRoot}google/gcm/http.html">
-HTTP</a> and <a href="{@docRoot}google/gcm/ccs.html">XMPP (CCS)</a>. You can use them
-separately or in tandem. XMPP (CCS) messaging differs from HTTP messaging in the following ways:</p>
-<ul>
-  <li>Upstream/Downstream messages
-    <ul>
-      <li>HTTP: Downstream only, cloud-to-device up to 4KB of data. </li>
-      <li>XMPP (CCS): Upstream and downstream (device-to-cloud, cloud-to-device),
-        up to 4 KB of data. </li>
-    </ul>
-  </li>
-  <li>Messaging (synchronous or asynchronous)
-    <ul>
-      <li>HTTP: Synchronous. 3rd-party app servers send messages as HTTP POST requests and
-wait for a response. This mechanism is synchronous and blocks the sender from sending
-another message until the response is received.</li>
-      <li>XMPP (CCS): Asynchronous. 3rd-party app servers send/receive messages to/from all their
-devices at full line speed over persistent XMPP connections.
-XMPP (CCS) sends acknowledgment or failure notifications (in the
-form of special ACK and NACK JSON-encoded XMPP messages) asynchronously.</li>
-    </ul>
-  </li>
-
-  <li>JSON
-    <ul>
-      <li>HTTP: JSON messages sent as HTTP POST.</li>
-      <li>XMPP (CCS): JSON messages encapsulated in XMPP messages.</li>
-    </ul>
-  </li>
-  <li>Plain Text
-    <ul>
-      <li>HTTP: Plain Text messages sent as HTTP POST.</li>
-      <li>XMPP (CCS): Not supported.</li>
-    </ul>
-  </li>
-  <li>Multicast downstream send to multiple registration IDs.
-    <ul>
-      <li>HTTP: Supported in JSON message format.</li>
-      <li>XMPP (CCS): Not supported.</li>
-    </ul>
-  </li>
-</ul>
-
-
-<h2 id="send-msg">Sending Messages</h2>
-
-<p>This section gives an overview of sending messages. For details of message syntax,
-see <a href="{@docRoot}google/gcm/server-ref.html">Server Reference</a>.</p>
-
-<h3>Overview</h3>
-
-<p>Here is the general sequence of events that occurs when a 3rd-party application
-server sends a message (the details vary depending on the platform):</p>
-<ol>
-  <li>The 3rd-party app server sends a message to GCM servers.</li>
-  <li>The GCM connection server enqueues and stores the message if the device is offline.</li>
-  <li>When the device is online, GCM connection server sends the message to the device.</li>
-  <li>The client app processes the message. </li>
-</ol>
-
-<h3>Implement send request</h3>
-
-<p>The following sections describe the basic components involved in
-sending a request. See the <a href="{@docRoot}google/gcm/server-ref.html">Server Reference</a>
-for details.</p>
-
-<h4 id="target">Target</h4>
-<p>Required. When your app server sends a message in GCM, it must specify a target.</p>
-<p>For HTTP you must specify the target as one of the following:</p>
-<ul>
-<li><code>registration_ids</code>: For sending to 1 or more devices (up to 1000).
-When you send a message to multiple registration IDs, that is called a multicast message.</li>
-<li><code>notification_key</code>: For sending to multiple devices owned by a single user.</li>
-</ul>
-<p>For CCS (XMPP) you must specify the target as:</p>
-<ul>
-<li>{@code to}: This
-field may contain a single registration ID or a notification key.
-XMPP (CCS) does not support multicast messaging.</li>
-</ul>
-
-<h4 id="options">Options</h4>
-
-<p>There are various options the 3rd-party app server can set when sending a downstream
-message to a client app. See the <a href="{@docRoot}google/gcm/server-ref.html#table1">
-Server Reference</a> for details. Here are a few examples of possible options:</p>
-
-<ul>
-  <li>{@code collapse_key}: whether a message should be "send-to-sync" or a "message with
-payload".</li>
-  <li>{@code time_to_live}: setting an expiration date for a message.</li>
-  <li>{@code dry_run}: Test your server.
-<p>If you want to test your request (either JSON or plain text) without delivering
-the message to the devices, you can set an optional HTTP parameter called
-<code>dry_run</code> with the value <code>true</code>. The result will be almost
-identical to running the request without this parameter, except that the message
-will not be delivered to the devices. Consequently, the response will contain fake
-IDs for the message and multicast parameters.</p>
-</li>
-</ul>
-
-<h4 id="payload">Payload</h4>
-<p>Optional. If you are including a payload in the message, you use the <code>data</code>
-parameter to include the payload. This applies for both HTTP and XMPP.</p>
-
-<p>See the <a href="{@docRoot}google/gcm/server-ref.html">Server Reference</a> for details on sending
-and receiving messages.</p>
-
-<h2 id="adv">Messaging Concepts and Best Practices</h2>
-
-<p>This section has a discussion of general messaging topics.</p>
-
-<h3 id="collapsible">Send-to-Sync  vs. Messages with Payload</h3>
-
-<p>Every message sent in GCM has the following characteristics:</p>
-<ul>
-  <li>It has a payload limit of 4096 bytes.</li>
-  <li>By default, it is stored by GCM for 4 weeks.</li>
-</ul>
-
-<p>But despite these similarities, messages can behave very differently depending
-on their particular settings. One major distinction between messages is whether
-they are collapsed (where each new message replaces the preceding message) or not
-collapsed (where each individual message is delivered). Every message sent in GCM
-is either a &quot;send-to-sync&quot; (collapsible) message or a &quot;message with
-payload&quot; (non-collapsible message).</p>
-
-<h4 id="s2s">Send-to-sync messages</h4>
-
-<p>A send-to-sync (collapsible) message is often a &quot;tickle&quot; that tells
-a mobile application to sync data from the server. For example, suppose you have
-an email application. When a user receives new email on the server, the server
-pings the mobile application with a &quot;New mail&quot; message. This tells the
-application to sync to the server to pick up the new email. The server might send
-this message multiple times as new mail continues to accumulate, before the application
-has had a chance to sync. But if the user has received 25 new emails, there's no
-need to preserve every &quot;New mail&quot; message. One is sufficient. Another
-example would be a sports application that updates users with the latest score.
-Only the most recent message is relevant. </p>
-
-<p>GCM allows a maximum of 4 different collapse keys to be used by the GCM server
-at any given time. In other words, the GCM server can simultaneously store 4
-different send-to-sync messages per device, each with a different collapse key.
-For example, Device A can have A1, A2, A3, and A4. Device B can have B1, B2, B3,
-and B4, and so on. If you exceed this number GCM will only keep 4 collapse keys, with no
-guarantees about which ones they will be.</p>
-
-<h3 id="payload">Messages with payload</h3>
-
-<p>Unlike a send-to-sync message, every &quot;message with payload&quot;
-(non-collapsible message) is delivered. The payload the message contains can be
-up to 4kb. For example, here is a JSON-formatted message in an IM application in
-which spectators are discussing a sporting event:</p>
-
-<pre class="prettyprint pretty-json">{
-  "registration_id" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
-  "data" : {
-    "Nick" : "Mario",
-    "Text" : "great match!",
-    "Room" : "PortugalVSDenmark",
-  },
-}</pre>
-
-<p>A &quot;message with payload&quot; is not simply a &quot;ping&quot; to the
-mobile application to contact the server to fetch data. In the aforementioned IM
-application, for example, you would want to deliver every message, because every
-message has different content. To specify a non-collapsible message, you simply
-omit the <code>collapse_key</code> parameter. Thus GCM will send each message
-individually. Note that the order of delivery is not guaranteed.</p>
-
-<p>GCM will store up to 100 non-collapsible messages. After that, all messages
-are discarded from GCM, and a new message is created that tells the client how
-far behind it is.</p>
-
-<p>The application should respond by syncing with the server to recover the
-discarded messages. </p>
-
-<h4 id="which">Which should I use?</h4>
-  <p>If your application does not need to use non-collapsible messages, collapsible
-messages are a better choice from a performance standpoint. However, if you use
-collapsible messages, remember that <strong>GCM only allows a maximum of 4 different collapse
-keys to be used by the GCM server per registration ID at any given time</strong>. You must
-not exceed this number, or it could cause unpredictable consequences.</p>
-
-<h3 id="ttl">Setting an Expiration Date for a Message</h3>
-<p>You can use the <code>time_to_live</code> parameter in the send request
-to specify the maximum lifespan of a message.
-The value of this parameter must be a duration from 0 to 2,419,200 seconds, and
-it corresponds to the maximum period of time for which GCM will store and try to
-deliver the message. Requests that don't contain this field default to the maximum
-period of 4 weeks.</p>
-<p>Here are some possible uses for this feature:</p>
-<ul>
-  <li>Video chat incoming calls</li>
-  <li>Expiring invitation events</li>
-  <li>Calendar events</li>
-</ul>
-<h4 id="bg">Background </h4>
-<p>GCM usually delivers messages immediately after they are sent. However,
-this might not always be possible. For example, if the platform is Android,
-the device could be turned off, offline, or otherwise unavailable.
-Or the sender itself might request
-that messages not be delivered until the device becomes active by using the
-<code>delay_while_idle</code> flag. Finally, GCM might intentionally delay messages
-to prevent an application from consuming excessive resources and negatively
-impacting battery life.</p>
-
-<p>When this happens, GCM will store the message and deliver it as soon as it's
-feasible. While this is fine in most cases, there are some applications for which
-a late message might as well never be delivered. For example, if the message is
-an incoming call or video chat notification, it will only be meaningful for a
-small period of time before the call is terminated. Or if the message is an
-invitation to an event, it will be useless if received after the event has ended.</p>
-
-<p>Another advantage of specifying the expiration date for a message is that GCM
-will never throttle messages with a <code>time_to_live</code> value of 0 seconds.
-In other words, GCM will guarantee best effort for messages that must be delivered
-&quot;now or never.&quot; Keep in mind that a <code>time_to_live</code> value of
-0 means messages that can't be delivered immediately will be discarded. However,
-because such messages are never stored, this provides the best latency for
-sending notifications.</p>
-
-<p>Here is an example of a JSON-formatted request that includes TTL:</p>
-<pre class="prettyprint pretty-json">
-{
-  "collapse_key" : "demo",
-  "delay_while_idle" : true,
-  "registration_ids" : ["xyz"],
-  "data" : {
-    "key1" : "value1",
-    "key2" : "value2",
-  },
-  "time_to_live" : 3
-},
-</pre>
-
-
-<h3 id="multi-senders">Receiving Messages from Multiple Senders</h3>
-
-<p>GCM allows multiple parties to send messages to the same application. For
-example, suppose your application is an articles aggregator with multiple
-contributors, and you want each of them to be able to send a message when they
-publish a new article. This message might contain a URL so that the application
-can download the article. Instead of having to centralize all sending activity in
-one location, GCM gives you the ability to let each of these contributors send
-its own messages.</p>
-
-<p>To make this possible, all you need to do is have each sender generate its own
-project number. Then include those IDs in the sender field, separated by commas,
-when requesting a registration. Finally, share the registration ID with your
-partners, and they'll be able to send messages to your application using their
-own authentication keys.</p>
-
-<p>Note that there is limit of 100 multiple senders.</p>
-
-<h3 id="lifetime">Lifetime of a Message</h3>
-
-<p>When a 3rd-party server posts a message to GCM and receives a message ID back,
-it does not mean that the message was already delivered to the device. Rather, it
-means that it was accepted for delivery. What happens to the message after it is
-accepted depends on many factors.</p>
-
-<p>In the best-case scenario, if the device is connected to GCM, the screen is on,
-and there are no throttling restrictions (see <a href="#throttling">Throttling</a>),
-the message will be delivered right away.</p>
-
-<p>If the device is connected but idle, the message will still be
-delivered right away unless the <code>delay_while_idle</code> flag is set to true.
-Otherwise, it will be stored in the GCM servers until the device is awake. And
-that's where the <code>collapse_key</code> flag plays a role: if there is already
-a message with the same collapse key (and registration ID) stored and waiting for
-delivery, the old message will be discarded and the new message will take its place
-(that is, the old message will be collapsed by the new one). However, if the collapse
-key is not set, both the new and old messages are stored for future delivery.
-Collapsible messages are also called <a href="#s2s">send-to-sync messages</a>.</p>
-
-<p class="note"><strong>Note:</strong> There is a limit on how many messages can
-be stored without collapsing. That limit is currently 100. If the limit is reached,
-all stored messages are discarded. Then when the device is back online, it receives
-a special message indicating that the limit was reached. The application can then
-handle the situation properly, typically by requesting a full sync.
-<br><br>
-Likewise, there is a limit on how many <code>collapse_key</code>s you can have for
-a particular device. GCM allows a maximum of 4 different collapse keys to be used
-by the GCM server per device
-any given time. In other words, the GCM server can simultaneously store 4 different
-send-to-sync messages, each with a different collapse key. If you exceed this number
-GCM will only keep 4 collapse keys, with no guarantees about which ones they will be.
-See <a href="#s2s">Send-to-sync messages</a> for more information.
-</p>
-
-<p>If the device is not connected to GCM, the message will be stored until a
-connection is established (again respecting the collapse key rules). When a connection
-is established, GCM will deliver all pending messages to the device, regardless of
-the <code>delay_while_idle</code> flag. If the device never gets connected again
-(for instance, if it was factory reset), the message will eventually time out and
-be discarded from GCM storage. The default timeout is 4 weeks, unless the
-<code>time_to_live</code> flag is set.</p>
-
-<p>Finally, when GCM attempts to deliver a message to the device and the
-application was uninstalled, GCM will discard that message right away and
-invalidate the registration ID. Future attempts to send a message to that device
-will get a <code>NotRegistered</code> error. See <a href="#unreg">
-How Unregistration Works</a> for more information.</p>
-<p>Although is not possible to track the status of each individual message, the
-Google Cloud Console stats are broken down by messages sent to device, messages
-collapsed, and messages waiting for delivery.</p>
-
-<h3 id="throttling">Throttling</h3>
-<p>To prevent abuse (such as sending a flood of messages to a device) and
-to optimize for the overall network efficiency and battery life of
-devices, GCM implements throttling of messages using a token bucket
-scheme. Messages are throttled on a per application and per <a href="#collapsible">collapse
-key</a> basis (including non-collapsible messages). Each application
-collapse key is granted some initial tokens, and new tokens are granted
-periodically therefter. Each token is valid for a single message sent to
-the device. If an application collapse key exhausts its supply of
-available tokens, new messages are buffered in a pending queue until
-new tokens become available at the time of the periodic grant. Thus
-throttling in between periodic grant intervals may add to the latency
-of message delivery for an application collapse key that sends a large
-number of messages within a short period of time. Messages in the pending
-queue of an application collapse key may be delivered before the time
-of the next periodic grant, if they are piggybacked with messages
-belonging to a non-throttled category by GCM for network and battery
-efficiency reasons.</p>
-
-
diff --git a/docs/html/google/gcs/gcs-signup.jd b/docs/html/google/gcs/gcs-signup.jd
deleted file mode 100644
index 7334cec..0000000
--- a/docs/html/google/gcs/gcs-signup.jd
+++ /dev/null
@@ -1,10 +0,0 @@
-page.title=Sign Up for Google Cloud Save
-
-@jd:body
-
-<p>Sign up to be a trial partner for Google Cloud Save.</p>
-
-
-<iframe src="https://docs.google.com/a/google.com/forms/d/1_V67YIXzLDLb-UzxOOpSjUDuJFfeYg3hEUT0oliK2ck/viewform?embedded=true" width="100%" height="930" frameborder="0" marginheight="0" marginwidth="0" id="signupform">Loading...</iframe>
-</body>
-</html>
diff --git a/docs/html/google/gcs/index.jd b/docs/html/google/gcs/index.jd
deleted file mode 100644
index e5f4776..0000000
--- a/docs/html/google/gcs/index.jd
+++ /dev/null
@@ -1,30 +0,0 @@
-page.title=Google Cloud Save
-page.tags="gcs"
-header.hide=1
-@jd:body
-
-
-<div class="landing-banner">
-
-<div class="col-5" style="min-height:100px">
-  <img src="{@docRoot}images/google/gcs.png" />
-</div>
-<div class="col-7">
-
-  <h1 itemprop="name" style="margin-bottom:0;">Google Cloud Save</h1>
-  <p itemprop="description">
-  Google Cloud Save is a service that enables per-user data storage
-and sync in your apps with no backend programming required. Google Cloud Save
-stores its data
-in <a href="http://developers.google.com/datastore/">Google Cloud Datastore</a>,
- a fully managed, schemaless database for storing non-relational data. Cloud
-Datastore automatically scales with your users.
-Google Cloud Save works even when your device is offline, and it
-provides an easy transition to server-side coding because
-the same database is accessible via App Engine and Compute Engine.
-Finally, Google Cloud Save provides a generous initial per-user free quota that
-expands as your user base grows.
-</p>
-<a href="{@docRoot}google/gcs/gcs-signup.html" class="button">Sign Up</a>
-</div>
-</div>
diff --git a/docs/html/google/google_toc.cs b/docs/html/google/google_toc.cs
index 510a755..dd0e735 100644
--- a/docs/html/google/google_toc.cs
+++ b/docs/html/google/google_toc.cs
@@ -1,115 +1,6 @@
-<?cs #########################################################
-     ########                                  ###############
-     ########            ATTENTION             ###############
-     ########                                  ###############
-     #########################################################
-
-     IF YOU MAKE CHANGES TO THIS FILE, YOU MUST GENERATE THE
-     GMS REFERENCE DOCS, BECAUSE THEY ARE NOT INCLUDED IN THE
-     DOCS BUILD RULE.
-
-     #########################################################
-     #########################################################
-?>
-
 <ul id="nav">
 
   <li class="nav-section">
-    <div class="nav-section-header empty"><a href="<?cs var:toroot?>google/index.html">
-          <span class="en">Overview</span>
-      </a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="<?cs var:toroot?>google/play-services/games.html">
-          <span class="en">Games</span>
-      </a></div>
-  </li>
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="<?cs var:toroot?>google/play-services/location.html">
-          <span class="en">Location</span>
-      </a></div>
-  </li>
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="<?cs var:toroot?>google/play-services/plus.html">
-          <span class="en">Google+</span>
-                </a></div>
-  </li>
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="<?cs var:toroot?>google/play-services/maps.html">
-          <span class="en">Maps</span>
-      </a></div>
-  </li>
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="<?cs var:toroot?>google/play-services/drive.html">
-          <span class="en">Drive</span>
-      </a></div>
-  </li>
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="<?cs var:toroot?>google/play-services/cast.html">
-          <span class="en">Cast</span>
-      </a></div>
-  </li>
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot ?>google/play-services/ads.html">
-      <span class="en">Ads</span></a>
-    </div>
-    <ul>
-      <li><a href="<?cs var:toroot?>google/play-services/id.html">
-          <span class="en">Advertising ID</span></a>
-      </li>
-    </ul>
-  </li>
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="<?cs var:toroot?>google/play-services/wallet.html">
-          <span class="en">Wallet</span>
-      </a></div>
-  </li>
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot?>google/play/safetynet/index.html">
-          <span class="en">SafetyNet</span>
-      </a></div>
-      <ul>
-        <li>
-          <a href="<?cs var:toroot ?>google/play/safetynet/start.html">
-            <span class="en">Getting Started</span>
-          </a>
-        </li>
-      </ul>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot ?>google/play-services/index.html">
-      <span class="en">Google Play Services</span></a>
-    </div>
-    <ul>
-      <li><a href="<?cs var:toroot?>google/play-services/setup.html">
-          <span class="en">Setting Up Google Play Services</span></a>
-      </li>
-      <li class="nav-section">
-        <div class="nav-section-header"><a href="<?cs var:toroot?>google/auth/api-client.html">
-          <span class="en">Accessing Google APIs</span></a>
-        </div>
-        <ul>
-          <li>
-            <a href="<?cs var:toroot ?>google/auth/http-auth.html">
-              <span class="en">Authorizing with Google for REST APIs</span>
-            </a>
-          </li>
-        </ul>
-      </li>
-      <li id="gms-tree-list" class="nav-section">
-        <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>reference/gms-packages.html">
-            <span class="en">Reference</span>
-          </a>
-        <div>
-      </li>
-    </ul>
-  </li>
-
-
-  <li class="nav-section">
     <div class="nav-section-header"><a href="<?cs var:toroot ?>google/play/billing/index.html" zh-cn-lang="应用内结算">
       <span class="en">Google Play In-app Billing</span></a>
     </div>
@@ -155,67 +46,31 @@
     </ul>
   </li>
 
-
-
-   <li class="nav-section">
-      <div class="nav-section-header"><a href="<?cs var:toroot ?>google/gcm/index.html">
-        <span class="en">Google Cloud Messaging</span></a>
-      </div>
-      <ul>
-        <li><a href="<?cs var:toroot?>google/gcm/gcm.html">
-            <span class="en">Overview</span></a>
-        </li>
-        <li><a href="<?cs var:toroot?>google/gcm/gs.html">
-            <span class="en">Getting Started</span></a>
-        </li>
-        <li><a href="<?cs var:toroot?>google/gcm/client.html">
-            <span class="en">Implementing GCM Client</span></a>
-        </li>
-        <li class="nav-section"><div class="nav-section-header"><a href="<?cs var:toroot?>google/gcm/server.html">
-              <span class="en">Implementing GCM Server</span></a></div>
-              <ul>
-              <li><a href="<?cs var:toroot?>google/gcm/ccs.html">
-              <span class="en">CCS (XMPP)</span></a></li>
-              <li><a href="<?cs var:toroot?>google/gcm/http.html">
-              <span class="en">HTTP</span></a></li>
-              </ul>
-        </li>
-        <li><a href="<?cs var:toroot?>google/gcm/server-ref.html">
-            <span class="en">Server Reference</span></a>
-        </li>
-        <li><a href="<?cs var:toroot?>google/gcm/notifications.html">
-              <span class="en">User Notifications</span></a>
-        </li>
-        <li><a href="<?cs var:toroot?>google/gcm/c2dm.html">
-            <span class="en">Migration</span></a>
-        </li>
-      </ul>
-  </li>
-
   <li class="nav-section">
-  <div class="nav-section-header empty"><a href="<?cs var:toroot ?>google/gcs/index.html">
-        <span class="en">Google Cloud Save</span></a>
-      </div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot ?>google/play/dist.html">
-      <span class="en">Google Play Distribution</span></a>
-    </div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>google/play/filters.html">
+  <div class="nav-section-header empty"><a href="<?cs var:toroot ?>google/play/filters.html">
           <span class="en">Filters on Google Play</span></a>
-      </li>
-      <li><a href="<?cs var:toroot?>google/play/billing/gp-purchase-status-api.html">
+      </div>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="<?cs var:toroot?>google/play/developer-api.html">
               <span class="en">Google Play Developer API</span></a>
-      </li>
-      <li><a href="<?cs var:toroot ?>google/play/publishing/multiple-apks.html">
+      </div>
+  </li>
+    <li class="nav-section">
+  <div class="nav-section-header empty"><a href="<?cs var:toroot ?>google/play/publishing/multiple-apks.html">
           <span class="en">Multiple APK Support</span></a>
-      </li>
-      <li><a href="<?cs var:toroot ?>google/play/expansion-files.html">
+      </div>
+  </li>
+    <li class="nav-section">
+  <div class="nav-section-header empty"><a href="<?cs var:toroot ?>google/play/expansion-files.html">
           <span class="en">APK Expansion Files</span></a>
-      </li>
-      <li class="nav-section">
+      </div>
+  </li>
+
+
+  <li class="nav-section">
+
         <div class="nav-section-header"><a href="<?cs var:toroot ?>google/play/licensing/index.html">
           <span class="en">Application Licensing</span></a>
         </div>
diff --git a/docs/html/google/index.jd b/docs/html/google/index.jd
index 4778a85..e7a5167 100644
--- a/docs/html/google/index.jd
+++ b/docs/html/google/index.jd
@@ -1,164 +1,191 @@
+fullpage=true
 page.title=Google Services
+section.landing=true
+meta.tags="google, play, services, maps, location, gcm, messaging, places"
 header.hide=1
+footer.hide=1
 @jd:body
 
-<style>
-div.landing-cell,
-div.cell-icon {
-  height:150px;
-}
-div.cell-icon {
-  float:left;
-  margin-right:20px;
-}
-div.cell-icon img {
-  margin:0;
-}
-</style>
 
-<div class="landing-banner">
-        
-<div class="col-6" style="min-height:0">
-  <img src="{@docRoot}images/google/google-services.png" alt="" width="340" height="193" />
-</div>
-<div class="col-6">
+<section class="dac-expand dac-hero dac-light">
+  <div class="wrap">
+    <div class="cols dac-hero-content">
+      <div class="col-1of2 col-push-1of2 dac-hero-figure">
+        <img class="dac-hero-image" src="/design/media/hero-material-design.png">
+      </div>
+      <div class="col-1of2 col-pull-1of2">
+        <h1 class="dac-hero-title">Build better apps with Google</h1>
+        <p class="dac-hero-description">
+          Take advantage of the latest Google technologies through a single set of APIs, delivered
+          across Android devices worldwide as part of Google Play services. </p>
+          <p class="dac-hero-description">Start by setting up the Google Play services library,
+          then build with the APIs you need. </p>
 
-  <h1 itemprop="name" style="margin-bottom:0;">Google Services</h1>
-  <p itemprop="description">Google offers a variety of services that help you
-build new revenue streams, manage app distribution,
-track app usage, and enhance your app with features such as maps, sign-in, and
-cloud messaging.</p>
-  <p>Although these Google services are not included in the Android platform, they are
-  supported by most Android-powered devices. When using these services, you can
-  distribute your app on Google Play to all devices running Android 2.3
-  or higher, and some services support even more devices.</p>
-</div>
-</div>
-<div>&nbsp;</div>
-
-
-
-
-
-<div style="margin-top:10px">
-<div class="col-6 normal-links" style="margin-left:0">
-
-<div class="landing-cell">
-  <div class="cell-icon">
-  <img src="{@docRoot}images/google/maps-pin.png" width="40" >
+        <a class="dac-hero-cta" href="https://developers.google.com/android/guides/">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Set up Google Play services
+        </a><br>
+        <a class="dac-hero-cta" href="https://developers.google.com/android/reference/">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          API Reference
+        </a><br>
+      </div>
+    </div>
   </div>
-    <h4><a href="{@docRoot}google/play-services/maps.html"
-    >Google Maps</a></h4>
-    <p>Include the power of Google Maps in your app
+</section>
+<div class="wrap dac-offset-parent">
+  <a class="dac-fab dac-scroll-button" data-scroll-button href="#latest">
+    <i class="dac-sprite dac-arrow-down-gray"></i>
+  </a>
+</div>
+
+<section class="dac-section dac-gray dac-small dac-invert" id="latest"><div class="wrap">
+  <h2 class="norule">Latest</h2>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="type:blog+tag:googleservices+tag:featured+tag:develop"
+       data-cardSizes="6x6"
+       data-maxResults="3"></div>
+  </div>
+</section>
+
+<section class="dac-section dac-light"><div class="wrap">
+  <h1 class="dac-section-title">Google APIs and services</h1>
+  <div class="dac-section-subtitle">
+    Add the latest Google-powered features to enrich your app,
+          grow your user base, and monetize. 
+  </div>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:google/landing/services"
+       data-cardSizes="6x6"
+       data-maxResults="6"></div>
+  <ul class="dac-section-links">
+    <li class="dac-section-link"><a href="https://developers.google.com/android/">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      More Google services for Android
+    </a></li>
+  </ul>
+  </div>
+</section>
+
+<section class="dac-section dac-gray dac-small dac-invert" id="videos"><div class="wrap">
+  <h2 class="norule">Videos</h2>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:google/landing/videos"
+       data-cardSizes="6x6"
+       data-maxResults="3"></div>
+  </div>
+</section>
+
+<section class="dac-section dac-invert dac-darken-bg" style="background-image: url(/images/distribute/google-play-bg.jpg)"><div class="wrap">
+  <h1 class="dac-section-title">Google Play developer tools</h1>
+  <div class="dac-section-subtitle">
+    Scale your publishing, manage your catalog, and build revenue using Google Play developer tools. 
+  </div>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:google/landing/googleplay"
+       data-cardSizes="6x3"
+       data-maxResults="6"></div>
+
+  <ul class="dac-section-links">
+    <li class="dac-section-link"><a href="/google/play/filters.html">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Device filtering
+    </a></li>
+    <li class="dac-section-link"><a href="/google/play/filters.html">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Multiple APK support
+    </a></li>
+    <li class="dac-section-link"><a href="/google/play/expansion-files.html">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      APK expansion files
+    </a></li>
+    <li class="dac-section-link"><a href="/google/play/licensing/index.html">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Licensing library
+    </a></li>
+  </ul>
+</div></section>
+
+<!--
+
+<section class="dac-section dac-light"><div class="wrap">
+  <h1 class="dac-section-title">More</h1>
+  <div class="dac-section-subtitle">
+    Design around Android's capabilities and conventions to give users the best experience.
+  </div>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:google/landing/more"
+       data-cardSizes="6x6"
+       data-maxResults="6"></div>
+</div></section>
+
+
+
+
+Google Play services
+video video
+
+
+Google Play Publishing Tools
+
+
+
+Distribute your app on Google Play to all devices running Android 2.3
+  or higher, and some services support even more devices.</p>
+
+
+Google Maps
+
+Include the power of Google Maps in your app
     with an embeddable map view. You can customize the map with
     markers and overlays, control the user's perspective, draw lines
-    and shapes, and much more.</p>
-</div>
+    and shapes, and much more.
 
-<div class="landing-cell">
-  <div class="cell-icon">
-  <img src="{@docRoot}images/google/plus-logo.png" width="40" >
-  </div>
-    <h4><a href="{@docRoot}google/play-services/plus.html"
-    >Google+</a></h4>
-    <p>Allow users to sign in with their Google account,
+Google+</a></h4>
+
+Allow users to sign in with their Google account,
     customize the user experience with Google+ info,
     pull people into your app with interactive posts,
     and add +1 buttons so users can recommend your content.</p>
-</div>
 
-<div class="landing-cell">
-  <div class="cell-icon">
-  <img src="{@docRoot}images/google/cloud-platform.png" width="40" >
-  </div>
-    <h4><a class="external-link" href="https://cloud.google.com/solutions/mobile"
-    >Google Cloud Platform</a></h4>
-    <p>Build and host the backend for your Android app at Google-scale. With an infrastructure
+
+Google Cloud Platform
+
+Build and host the backend for your Android app at Google-scale. With an infrastructure
     that is managed automatically, you can focus on your app. Then, scale to support
-    millions of users.</p>
-</div>
-
-<div class="landing-cell">
-  <div class="cell-icon">
-  <img src="{@docRoot}images/google/gcm-cloud.png" width="40" >
-  </div>
-    <h4><a href="{@docRoot}google/gcm/index.html"
-    >Google Cloud Messaging</a></h4>
-    <p>Immediately notify your users about timely events by delivering
-    lightweight messages from your web server. There are no quotas or charges
-    to use Google Cloud Messaging.</p>
-</div>
-
-<div class="landing-cell">
-  <div class="cell-icon">
-  <img src="{@docRoot}images/google/gcs-small.png" width="40" >
-  </div>
-    <h4><a href="{@docRoot}google/gcs/index.html"
-    >Google Cloud Save</a></h4>
-    <p>Enable per-user data storage and sync in your apps with no backend programming
-    required.</p>
-</div>
-
-</div><!-- col-6 -->
+    millions of users.
 
 
 
 
-<div class="col-6" style="margin-right:0">
 
-<div class="landing-cell">
-  <div class="cell-icon">
-    <img src="{@docRoot}images/google/iab-99c.png" width="40" />
-  </div>
-    <h4><a href="{@docRoot}google/play/billing/index.html"
-    >Google Play In-App Billing</a></h4>
-    <p>Build an app with a steady revenue stream that keeps users engaged
+More
+
+Google Play In-App Billing
+
+Build an app with a steady revenue stream that keeps users engaged
     by offering new content or virtual goods directly in your app. All transactions are handled
     by Google Play Store for a simple user experience.
-    </p>
-</div>
 
-<div class="landing-cell">
-  <div class="cell-icon">
-    <img src="{@docRoot}images/google/wallet.png" width="40" />
-  </div>
-    <h4><a href="{@docRoot}google/play-services/wallet.html"
-    >Google Wallet Instant Buy</a></h4>
-    <p>Provide fast and easy checkout in your app when selling physical goods and services.
+
+Android Pay
+
+Provide fast and easy checkout in your app when selling physical goods and services.
     Increase conversions by streamlining your purchase flow and reducing the amount of
     information your customers need to enter.
-    </p>
-</div>
 
-<div class="landing-cell">
-  <div class="cell-icon">
-<img src="{@docRoot}images/google/analytics.png" width="40" />
-  </div>
-    <h4><a class="external-link" 
-href="https://developers.google.com/analytics/devguides/collection/android/v4/"
-  >Google Analytics</a></h4>
+Google Analytics
 
-<p>Measure your success and gain insights into how users engage with your app content
+Measure your success and gain insights into how users engage with your app content
 by integrating Google Analytics. You can track in-app purchases, the number of active users,
 interaction patterns, and much more.
-</p>
-</div>
 
-<div class="landing-cell">
-  <div class="cell-icon">
-    <img src="{@docRoot}images/google/google-mobile-ads.png" width="40" />
-  </div>
-    <h4><a href="{@docRoot}google/play-services/ads.html"
-    >Google Mobile Ads</a></h4>
-    <p>Display ads from Google Mobile Ads offer you an alternative revenue opportunity that leverages
+
+Google Mobile Ads
+
+Display ads from Google Mobile Ads offer you an alternative revenue opportunity that leverages
     multiple ad networks with targeted ads and several display formats.
-    </p>
-</div>
-  
-</div><!-- col-6 -->
-
-</div><!-- margin wrapper -->
 
 
 
-
+-->
\ No newline at end of file
diff --git a/docs/html/google/play-services/ads.jd b/docs/html/google/play-services/ads.jd
deleted file mode 100644
index 2f915f3..0000000
--- a/docs/html/google/play-services/ads.jd
+++ /dev/null
@@ -1,110 +0,0 @@
-page.title=Google Mobile Ads
-page.tags=Ads,monetization,AdMob,Google Play services
-header.hide=1
-
-@jd:body
-
-
-<div class="landing-banner">
-        
-<div class="col-6">
-  <img src="{@docRoot}images/google/gps-ads.png" alt="">
-</div>
-<div class="col-6">
-
-<h1 itemprop="name" style="margin-bottom:0;">Google Mobile Ads</h1>
-<p itemprop="description">
-  Monetize your app with banner or interstitial ads from
-  Google's vast pool of advertisers. Integrate with top ad networks through
-  mediation to maximize your revenue from impressions. Take advantage of new
-  ad features and capabilities through Google Play services, without having to
-  add or update a library in your APK.
-</p>
-
-<p>
-  Check out the  <a href=
-  "{@docRoot}reference/gms-packages.html">Google Mobile Ads API reference</a> and visit <a class=
-  "external-link" href=
-  "http://developers.google.com/mobile-ads-sdk">developers.google.com/mobile-ads-sdk</a>
-  for more information about integrating Google Mobile Ads into your app.
-</p>
-</div>
-</div>
-
-<div style=
-"background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;" class=
-"caution">
-  <p><strong>Upgrade to the new AdMob</strong></p>
-  <p>Legacy AdMob will be shutting down on August 31, 2014. Beginning August 31,
-    you will no longer be able to use legacy AdMob to promote and monetize your
-    apps. Specifically, please be aware of the following:</p>
-  <ol style="margin-bottom:0;">
-    <li>Ads will stop serving to legacy ad units that are not updated with new
-    ad unit IDs.</li>
-    <li>Legacy house ad campaigns will stop serving.</li>
-    <li>You will not be able to access the legacy AdMob UI after August 31,
-    2014.</li>
-  </ol>
-  <p>If you are still using legacy AdMob, please upgrade your account to the new
-    AdMob as soon as possible. Upgrading takes only 5 minutes. <a href=
-    "https://apps.admob.com/admob/signup?">Start here</a>.</p>
-</div>
-
-<div class="landing-docs">
-  <div class="col-6 normal-links">
-    <h3 style="clear:left">Key Developer Features</h3>
-
-      <h4>Seamless auto-updates</h4>
-      <p>The Google Mobile Ads SDK is part of Google Play services, so you can take advantage of features
-      and capabilities in each new release of Google Play services, without needing to update your
-      APK. </p>
-
-      <h4>Monetize your apps</h4>
-      <p>Connect with over a million Google advertisers and show relevant ads in your app. Users
-      engage with the ads, you make money. The Google Mobile Ads SDK fully supports AdMob,
-      DoubleClick for Publishers, DoubleClick Ad Exchange, and Search Ads for Mobile Apps. 
-      <br>
-      <a href="http://www.google.com/ads/admob/monetize.html" class="external-link">Learn more
-      and sign up</a>.</p>
-
-      <h4>Location-based ads</h4>
-      <p>You can use the publisher-provided location API to provide Google with the location when
-      requesting ads. Location-based ads can improve your app monetization.</p>
-
-      <h4>Innovative ads</h4>
-      <p>Choose from a range of ads across mobile devices and tablets, including interactive
-      ad units.</p>
-
-      <h4>Flexible and powerful tools </h4>
-      <p>Filters and controls help you manage your ads. If you want to use multiple ad
-      networks, you can do that too, with free ad network mediation.</p>
-
-      <h4>Ad Policy Compliant</h4>
-      <p>The Google Mobile Ads SDK available in Google Play services is compliant with
-      Google Play Ad Poilcy regarding the usage of
-      <a href="{@docRoot}google/play-services/id.html">advertising ID</a>.</p>
-  </div>
-
-  <div class="col-6 normal-links">
-    <h3 style="clear:left">Getting Started</h3>
-    <h4>1. Get the Google Play services SDK</h4>
-    <p>The Google Mobile Ads APIs are part of the Google Play services platform.</p>
-    <p>To get started, <a href="{@docRoot}google/play-services/setup.html">set up
-      the Google Play services SDK</a>.</p>
-
-    <h4>2. Run the sample</h4>
-    <p>Once you've installed the Google Play services package, the Google Mobile Ads sample is located
-    in <code>&lt;android-sdk&gt;/extras/google-play-services/samples/ads</code> and shows you how to
-    serve banner and interstitial ads using the Google Mobile Ads APIs.</p>
-
-    <h4>3. Read the documentation</h4>
-    <p>Your use of the Google Mobile Ads SDK is governed by the terms between you and Google that
-    govern your use of the Google product (AdSense/AdMob, AdX or DFP) with which you use the SDK.</p>
-    <p>For quick access while developing your Android apps, the <a
-    href="{@docRoot}reference/gms-packages.html">Google Mobile Ads API reference</a> is available here on
-    developer.android.com.</p>
-    <p>Detailed documentation for Google Mobile Ads for Android is available with the rest of the Google
-    Mobile Ads developer documents at <a href="https://developers.google.com/mobile-ads-sdk"
-    class="external-link">developers.google.com/mobile-ads-sdk</a>. </p>
-  </div>
-</div>
diff --git a/docs/html/google/play-services/cast.jd b/docs/html/google/play-services/cast.jd
deleted file mode 100644
index 656f634..0000000
--- a/docs/html/google/play-services/cast.jd
+++ /dev/null
@@ -1,92 +0,0 @@
-page.title=Google Cast Android API
-page.tags="chromecast","miracast"
-header.hide=1
-
-@jd:body
-
-
-<div class="landing-banner">
-
-<div class="col-6">
-  <img src="{@docRoot}images/google/googlecast.png" alt="">
-</div>
-<div class="col-6">
-
-  <h1 itemprop="name" style="margin-bottom:0;">Google Cast Android API</h1>
-  <p itemprop="description">Google Cast is a technology that enables multi-screen experiences, which
-  allows users to send content from mobile devices and personal computers to their TVs.
-  You can use the Google Cast Android API
-  to add casting functionality to your Android app so users can view your app content on their
-  big screens.</p>
-
-  <p>Explore the <a href="{@docRoot}reference/com/google/android/gms/cast/package-summary.html"
-  >Google Cast Android API reference</a> or visit <a
-  href="http://developers.google.com/cast/" class="external-link">developers.google.com/cast</a>
-  for more information about how to design and build your app to support Google Cast.</p>
-  <p></p>
-</div>
-</div>
-
-<div class="landing-docs">
-  <div class="col-6 normal-links">
-    <h3 style="clear:left">Key Developer Features</h3>
-
-      <h4>Add your own style to a pre-built receiver app</h4>
-      <p>Adding support for Google Cast requires that you provide a companion app on the
-      Google Cast device, known as the receiver app. If your app streams audio or video content
-      using one of several supported media types, then you can create a receiver app with your
-      own style and branding by creating nothing more than a CSS file.
-      <br/><a href="http://developers.google.com/cast/docs/styled_receiver" class="external-link"
-      >Create a Styled Media Receiver</a></p>
-
-      <h4>Build an entirely custom receiver app</h4>
-      <p>If the Styled Media Receiver does not provide the UI components required for your
-      receiver app or does not support the media types your app requires, you can build your
-      own receiver app as a web page using the JavaScript Receiver API.
-      <br/><a href="http://developers.google.com/cast/docs/styled_receiver" class="external-link"
-      >Create a Custom Receiver</a></p>
-
-      <h4>Add playback controls to your app</h4>
-      <p>To allow users to control playback on the receiver app, you can add a
-      controller interface to your app on Android, iOS, and Chrome. The client app on these devices
-      is known as the sender app and can perform a variety of actions using the Google Cast APIs
-      such as start and pause playback and control the volume on the Google Cast device.
-      <br/><a href="http://developers.google.com/cast/docs/sender_apps" class="external-link"
-      >Create a Sender App</a></p>
-  </div>
-
-
-  <div class="col-6 normal-links">
-    <h3 style="clear:left">Getting Started</h3>
-    <h4>1. Get the Google Play services SDK</h4>
-
-    <p>The Google Cast Android APIs are part of the Google Play services platform.</p>
-    <p>To get started, <a href="{@docRoot}google/play-services/setup.html">set up
-      the Google Play services SDK</a> on your development machine and be sure your test device has
-      Google Play services 4.2 (or higher) installed.</p>
-
-    <h4>2. Register your app</h4>
-    <p>Before you can develop and test apps on your own Google Cast device,
-    you need to acquire an app ID for your API calls and register your Google Cast device
-    (such as a Chromecast) as a development device. For details, read the
-    <a href="http://developers.google.com/cast/docs/registration"
-    class="external-link">Registration</a> guide.</p>
-
-    <h4>3. Design the Android app UI</h4>
-    <p>To provide the perfect user experience when casting your content to TVs, be sure your
-    app follows all the recommendations in the <a class="external-link"
-    href="https://developers.google.com/cast/docs/design_checklist"
-    >Design Checklist</a>.</p>
-
-    <h4>4. Start developing</h4>
-    <p>Read the <a class="external-link"
-    href="https://developers.google.com/cast/docs/developers">Developer's Guide</a>
-    to learn how to implement the receiver app and how to send it commands from your Android app.
-    </p>
-
-    <p>For quick access while developing your Android app, the
-    <a href="{@docRoot}reference/com/google/android/gms/cast/package-summary.html">Google Cast
-    Android API reference</a> is available here on developer.android.com.</p>
-
-  </div>
-</div>
\ No newline at end of file
diff --git a/docs/html/google/play-services/drive.jd b/docs/html/google/play-services/drive.jd
deleted file mode 100644
index e9662e6..0000000
--- a/docs/html/google/play-services/drive.jd
+++ /dev/null
@@ -1,141 +0,0 @@
-page.title=Google Drive Android API
-page.tags="storage","files","cloud"
-header.hide=1
-
-@jd:body
-
-    <div class="landing-banner">
-      <div class="col-6">
-        <img src="{@docRoot}images/google/gps-drive.png" alt="">
-      </div>
-
-      <div class="col-6">
-        <h1 itemprop="name" style="margin-bottom:0;">
-          Google Drive Android API
-        </h1>
-
-        <p itemprop="description">
-          Give your users access to their files, wherever they are, on any device.
-          The Google Drive Android API makes it easier than ever to use Drive to
-          store and sync user’s files between their mobile devices and the cloud.
-          Simply use Drive like local file storage and the API will handle the
-          syncing for you.
-        </p>
-
-        <p>
-          Explore the <a href=
-          "{@docRoot}reference/com/google/android/gms/drive/package-summary.html">Google
-          Drive Android API reference</a> or visit <a href=
-          "http://developers.google.com/drive/android">developers.google.com/drive/android</a>
-          for more information about integrating Google Drive into your app.
-        </p>
-      </div>
-    </div>
-
-    <div class="landing-docs">
-      <div class="col-6 normal-links">
-        <h3 style="clear:left">
-          Key Developer Features
-        </h3>
-
-        <h4>
-          Automatic syncing
-        </h4>
-
-        <p>
-          The Google Drive Android API uses the local device storage to create,
-          edit, and open files, then syncs them automatically when the device
-          is connected to the Internet. If a user requests a file that isn’t
-          already cached on the device, the Drive service downloads the file
-          the next time the device connects.<br>
-          <a href="http://developers.google.com/drive/android/files" class=
-          "external-link">Open a file</a>
-        </p>
-
-        <h4>
-          User interface components
-        </h4>
-
-        <p>
-          Building your own user interface for selecting or creating files is a
-          thing of the past. The Drive API includes activity builders for two
-          of the most common user activities: opening files and creating
-          files.<br>
-          <a href="http://developers.google.com/drive/android/create-file"
-          class="external-link">Create a file</a>
-        </p>
-
-        <h4>
-          Easily search for files
-        </h4>
-
-        <p>
-          The query builder allows you to easily construct a query by joining
-          together multiple parameters and filtering based on metadata. This
-          allows you to easily display only relevant files, such as files
-          shared with the user or files with a specific MIME type.<br>
-          <a class="external-link" href=
-          "http://developers.google.com/drive/android/queries">Query for a
-          file</a>
-        </p>
-      </div>
-
-      <div class="col-6 normal-links">
-        <h3 style="clear:left">
-          Getting Started
-        </h3>
-
-        <h4>
-          1. Get the Google Play services SDK
-        </h4>
-
-        <p>
-          The Google Drive Android API is part of the Google Play services
-          platform.
-        </p>
-
-        <p>
-          To get started, <a href=
-          "{@docRoot}google/play-services/setup.html">set up the Google Play
-          services SDK</a>.
-        </p>
-
-        <h4>
-          2. Run the sample
-        </h4>
-
-        <p>
-          Once you’ve set up the Google Play services SDK, you can run the
-          Google Drive sample located in
-          <code>&lt;android-sdk&gt;/extras/google-play-services/samples/drive</code>.
-          However, before you can run the sample, you need to register your app
-          in the Google Developers Console.
-        </p>
-
-        <p>
-          See <a class="external-link" href=
-          "http://developers.google.com/drive/android/get-started">Getting
-          Started guide</a> to learn how to get up and running with the Google
-          Drive Android API.
-        </p>
-
-        <h4>
-          3. Read the documentation
-        </h4>
-
-        <p>
-          For quick access while developing your Android apps, the <a href=
-          "{@docRoot}reference/com/google/android/gms/drive/package-summary.html">
-          Google Drive API reference</a> is available here on
-          developer.android.com.
-        </p>
-
-        <p>
-          Detailed documentation for the Google Drive Android API is available
-          with the rest of the Google Drive Platform documentation at <a class=
-          "external-link" href=
-          "https://developers.google.com/drive/android">developers.google.com/drive</a>.
-        </p>
-      </div>
-    </div>
-    
\ No newline at end of file
diff --git a/docs/html/google/play-services/games.jd b/docs/html/google/play-services/games.jd
deleted file mode 100644
index f68751d..0000000
--- a/docs/html/google/play-services/games.jd
+++ /dev/null
@@ -1,94 +0,0 @@
-page.title=Google Play Game Services
-page.tags="games"
-header.hide=1
-
-@jd:body
-
-<div class="landing-banner">
-
-<div class="col-6">
-  <img src="{@docRoot}images/google/gps-play_games_logo.png" alt="">
-</div>
-<div class="col-6">
-
-<h1 itemprop="name" style="margin-bottom:0;">Google Play Game Services</h1>
-  <p itemprop="description">
-Make your games social with Google Play game services. Add achievements,
-leaderboards, real-time multiplayer, and other popular features using the
-Google Play game services SDK. Let players sign in using their Google+
-identities and share their gaming experience with friends.
-  </p>
-<p>Explore the
-<a href="{@docRoot}reference/com/google/android/gms/games/package-summary.html">Google
-Play Games Android API reference</a> or visit
-<a class="external-link" href=
-"https://developers.google.com/games/services/">developers.google.com/games/services</a>
-for more information about integrating game services into your app.
-</p>
-</div>
-</div>
-
-<div class="landing-docs">
-  <div class="col-6 normal-links">
-    <h3 style="clear:left">Key Developer Features</h3>
-
-    <h4>Reward players with achievements</h4>
-    <p>Add hidden and incremental achievements to encourage users to explore your game in new
-    and interesting ways. A built-in achievement UI is available to display progress. <br />
-    <a class="external-link" href="https://developers.google.com/games/services/android/achievements">Add
-    achievements to your game</a>.</p>
-    </a>
-
-    <h4>Drive engagement with leaderboards</h4>
-    <p>Let players compare scores with friends using leaderboards and see how they rank
-    against other players worldwide. Google Play game services automatically maintains daily,
-    weekly, and all-time high scores. <br /><a class="external-link"
-    href="https://developers.google.com/games/services/android/leaderboards">Build leaderboards</a></p>
-
-    <h4>Save game data to the cloud</h4>
-    <p>Offer seamless game progress across all of the user's devices. Use the Saved Games API
-    to quickly store and synchronize game data on Google's cloud
-    infrastructure. <br />
-    <a
-    class="external-link" href="https://developers.google.com/games/services/android/savedgames">Save
-    game data to the cloud</a></p>
-
-    <h4>Create real-time and turn-based multiplayer games</h4>
-    <p>Make your game more dynamic with simultaneous or asynchronous gameplay.
-    Use the multiplayer APIs to send match invitations, auto-match players
-    anonymously, and exchange data between game clients. <br />Develop <a class="external-link"
-    href="https://developers.google.com/games/services/android/multiplayer">real-time
-    multiplayer</a> and <a class="external-link"
-    href="https://developers.google.com/games/services/android/turnbasedMultiplayer">turn-based multiplayer</a> games</p>
-  </div>
-
-
-  <div class="col-6 normal-links">
-    <h3 style="clear:left">Getting Started</h3>
-    <h4>1. Get the Google Play services SDK</h4>
-    <p>Google Play game services is part of the Google Play services platform.</p>
-    <p>To use game services, <a href="{@docRoot}google/play-services/setup.html">set up
-      the Google Play services SDK</a>. Then, see the <a class="external-link"
-      href="https://developers.google.com/games/services/android/quickstart">
-      Getting Started guide</a> to set up your app.
-    </p>
-
-    <h4>2. Run the sample</h4>
-
-    <p>Once you've installed the Google Play services package, <a class="external-link"
-      href="https://developers.google.com/games/services/downloads/">download the game services
-      samples</a> to learn how to use the major components of the Google Play game services SDK.
-    </p>
-
-    <h4>3. Read the documentation</h4>
-
-    <p>Read the <a class="external-link" href="https://developers.google.com/games/services/terms">
-    API Terms of Service</a>.</p>
-    <p>Detailed documentation for the Google Play game services SDK is available at <a class="external-link"
-    href="https://developers.google.com/games/services/">developers.google.com/games/services</a>.
-    </p>
-    <p>For quick access while developing your Android apps, the
-      <a href="{@docRoot}reference/com/google/android/gms/games/package-summary.html">API reference</a> is available here on developer.android.com.</p>
-  </div>
-
-</div>
diff --git a/docs/html/google/play-services/id.jd b/docs/html/google/play-services/id.jd
deleted file mode 100644
index 43d1809..0000000
--- a/docs/html/google/play-services/id.jd
+++ /dev/null
@@ -1,211 +0,0 @@
-page.title=Advertising ID
-page.tags=Ads,Advertising ID,ID
-header.hide=1
-
-@jd:body
-
-<div class="landing-banner">
-        
-<div class="col-8">
-
-  <h1 itemprop="name" style="margin-bottom:0;">Advertising ID</h1>
-  <p itemprop="description">The advertising ID is a user-specific, unique,
-  resettable ID for advertising, provided by Google Play services. It gives
-  users better controls and provides developers with a simple, standard system
-  to continue to monetize your apps. It is an anonymous identifier for advertising
-  purposes and enables users to reset their identifier or opt out of interest-based
-  ads within Google Play apps. </p>
-
-<p>The advertising ID is accessible through a straightforward API that you can implement in your apps. For details, 
-take a look at the
-<a href="#get_started">overview</a> and the <a
-href="{@docRoot}reference/com/google/android/gms/ads/identifier/package-summary.html">advertising ID API reference</a>.
-
-</div>
-</div>
-
-<div class="landing-docs">
-  <div class="col-6 normal-links">
-    <h3 style="clear:left">Key Developer Features</h3>
-
-      <h4>Standard, simple ID</h4>
-      <p>The advertising ID is a part of a standard, simple system for serving ads and performing analytics.</p>
-
-      <h4>Giving users control</h4>
-      <p>Users  can reset their advertising ID or opt out of interest-based ads at any time, right from the Google Settings app.
-      Their preferences apply across all ad companies that use the advertising ID.</p>
-       
-  </div>
-
-  <div class="col-6 normal-links">
-    <h3 style="clear:left">Getting Started</h3>
-    <h4>1. Get the Google Play services SDK</h4>
-    <p>The advertising ID APIs are part of the Google Play services platform.</p>
-    <p>To get started, <a href="{@docRoot}google/play-services/setup.html">set up
-      the Google Play services SDK</a>. </p>
-
-    <h4>2. Read the docs and example code</h4>
-    <p>Once you've installed the Google Play services package, review the <a href="#get_started">overview</a>
-    below, as well as the <a href="#example">example</a>.</p>
-    <p>
-    For detailed documentation, take a look at the <a href=
-    "{@docRoot}reference/com/google/android/gms/ads/identifier/package-summary.html">
-    advertising ID API reference documentation</a>.
-    </p>
-  </div>
-</div>
-
-<p class="caution" style=
-"background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;">
-  As a reminder, please note that starting <strong>1 August 2014</strong>, new
-  apps and app updates distributed through Google Play must use the advertising
-  ID in lieu of any other persistent identifiers for any advertising purposes,
-  on devices that support the advertising ID.<br>
-  <br>
-  To learn how to check your app's compliance through the Developer Console, or
-  for details on the associated developer policy changes, please see the
-  <a href=
-  "https://support.google.com/googleplay/android-developer/answer/6048248">Advertising
-  ID topic</a> in the Google Play developer help center.
-</p>
-
-<h2 id="get_started">Using the Advertising ID</h2>
-
-<p>
-  The <strong>advertising ID</strong> is a unique but
-  user-resettable string identifier that lets ad networks and other apps anonymously
-  identify a user. The user's advertising ID is made available to apps through APIs
-  provided in Google Play services.
-</p>
-<p>
-  Users can reset their advertising ID at any time, right from the Ads section of the
-  Google Settings app on their devices. From the same app, users can also
-  opt-out of targeted advertising based on the advertising ID by setting the appropriate
-  <strong style="white-space:nowrap">ad tracking preference</strong>. When the
-  user opts-out of targeted ads, this ad tracking preference is made available
-  to apps through a Google Play services API.
-</p>
-<p>
-  Apps making use of the advertising ID <strong>must check for and respect</strong> the
-  user's ad tracking preference. Also please note that any use of the advertising ID
-  must abide by the terms of the <a class="external-link"
-  href="http://play.google.com/about/developer-content-policy.html#ADID">Google Play
-  Developer Content Policies</a>. 
-</p>
-
-<h3 id="format">Format of the Advertising ID</h3>
-
-<p>
-  Google Play services APIs expose the user's advertising ID as a string format of UUID,
-  with values similar to this:
-</p>
-<p style="margin-left:1.5em;"><code>“38400000-8cf0-11bd-b23e-10b96e40000d”</code></p>
-
-<h3 id="requirements">Requirements</h3>
-
-<ul>
-  <li>The advertising ID APIs are supported in Google Play services 4.0+</li>
-  <li>Support for the advertising ID on specific devices is based on their installed versions 
-  of Google Play services</li>
-</ul>
-
-<h3 id="obtaining">Obtaining the user's advertising ID and ad tracking preference</h3>
-
-<p>
-  If you want to use the advertising ID in your app, you must first install the Google
-  Play services SDK. As noted in the requirements above, you should install the
-  SDK for Google Play services 4.0 or higher if you will develop using the advertising ID
-  APIs. For information about how to get started, see <a href=
-  "{@docRoot}google/play-services/setup.html">Set Up Google Play services</a>.
-</p>
-<p>
-  The advertising ID APIs are available in the <a href=
-  "{@docRoot}reference/com/google/android/gms/ads/identifier/package-summary.html">
-  <code>com.google.android.gms.ads.identifier</code></a> package in the Google
-  Play Services library. To obtain the user's advertising ID and tracking preference,
-  call the method
-  <a href=
-  "{@docRoot}reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.html#getAdvertisingIdInfo(android.content.Context)">
-  <code>getAdvertisingIdInfo()</code></a>, which returns an <a href=
-  "{@docRoot}reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.Info.html">
-  <code>AdvertisingIdClient.Info</code></a> encapsulating the user's current Advertising ID
-  and tracking preference.
-</p>
-
-<p class="note">
-  <strong>Note:</strong> The <code>getAdvertisingIdInfo()</code> method is a
-  blocking call, so you must not call it on the main (UI) thread. If called on
-  the main thread, the method throws <code>IllegalStateException</code>.
-</p>
-
-<p>
-  Once you've retrieved the <code>AdvertisingIdClient.Info</code> object, you
-  can use it's <a href=
-  "{@docRoot}reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.Info.html#getId()">
-  <code>getId()</code></a> and <a href=
-  "{@docRoot}reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.Info.html#isLimitAdTrackingEnabled()">
-  <code>isLimitAdTrackingEnabled()</code></a> methods to access the advertising ID and
-  ad tracking preference.
-</p>
-
-<table>
-<tr>
-<th>Method</th>
-<th>Description</th>
-</tr>
-<tr>
-<td><code>public String getId()</code></td>
-<td style="white-space:nowrap;">Retrieves the advertising ID.</td>
-</tr>
-<tr>
-<td style="white-space:nowrap;"><code>public boolean isLimitAdTrackingEnabled()</code></td>
-<td>Retrieves whether the user has limit ad tracking enabled or not.</td>
-</tr>
-</table>
-
-<p>
-  The advertising ID APIs do not include a "reset" method. Only users can initiate a
-  reset of their own advertising IDs, through the Google Settings application.
-</p>
-<p>
-  For more information about the advertising ID APIs, see the <a href=
-  "{@docRoot}reference/com/google/android/gms/ads/identifier/package-summary.html">
-  reference documentation</a>.
-</p>
-
-<h3 id="example">Example implementation</h3>
-
-<p>
-  Here's a basic illustration of how you can retrieve the user's advertising ID and ad
-  tracking preference in your app:
-</p>
-
-<pre>
-import com.google.android.gms.ads.identifier.AdvertisingIdClient;
-import com.google.android.gms.ads.identifier.AdvertisingIdClient.Info;
-import com.google.android.gms.common.GooglePlayServicesAvailabilityException;
-import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
-import java.io.IOException;
-...
-
-// Do not call this function from the main thread. Otherwise, 
-// an IllegalStateException will be thrown.
-public void getIdThread() {
-
-  Info adInfo = null;
-  try {
-    adInfo = AdvertisingIdClient.getAdvertisingIdInfo(mContext);
-
-  } catch (IOException e) {
-    // Unrecoverable error connecting to Google Play services (e.g.,
-    // the old version of the service doesn't support getting AdvertisingId).
- 
-  } catch (GooglePlayServicesAvailabilityException e) {
-    // Encountered a recoverable error connecting to Google Play services. 
-
-  } catch (GooglePlayServicesNotAvailableException e) {
-    // Google Play services is not available entirely.
-  }
-  final String id = adInfo.getId();
-  final boolean isLAT = adInfo.isLimitAdTrackingEnabled();
-}</pre>
diff --git a/docs/html/google/play-services/index.jd b/docs/html/google/play-services/index.jd
index 5ccdcb9..11060e8 100644
--- a/docs/html/google/play-services/index.jd
+++ b/docs/html/google/play-services/index.jd
@@ -24,8 +24,8 @@
 </div>
 </div>
 
-  <div class="layout-content-row">
-  <div class="layout-content-col span-4">
+  <div class="cols">
+  <div class="col-4">
 
 <h4>Google Technology</h4>
 <p>Google Play services provides you with easy access to Google services and is
@@ -34,7 +34,7 @@
 easier and faster.</p>
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
 
 <h4>Standard Authorization</h4>
 <p>All products in Google Play services share a common authorization API
@@ -43,7 +43,7 @@
   to Google services.</p>
 
   </div>
-  <div class="layout-content-col span-4">
+  <div class="col-4">
 
 <h4>Automatic Updates</h4>
 <p>Devices running Android 2.3 or higher that have the Google Play Store
@@ -666,8 +666,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4 id="apk">The Google Play services APK</h4>
     <p>
         The Google Play services APK contains the individual Google services and runs
@@ -687,7 +687,7 @@
     </p>
   </div>
 
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="/images/play-services-diagram.png" />
     <p class="img-caption"><em>The Google Play services APK on user devices receives regular updates
     for new APIs, features, and bug fixes.</em></p>
diff --git a/docs/html/google/play-services/location.jd b/docs/html/google/play-services/location.jd
deleted file mode 100644
index b28302c..0000000
--- a/docs/html/google/play-services/location.jd
+++ /dev/null
@@ -1,125 +0,0 @@
-page.title=Location APIs
-page.tags=location,geofence,geofencing,gps
-header.hide=1
-@jd:body
-
-
-    <div class="landing-banner">
-
-<div class="col-6">
-    <img src="{@docRoot}images/google/gps-location.png" alt="Location APIs Logo">
-</div>
-
-<div class="col-6">
-
-<h1 itemprop="name" style="margin-bottom:0;">Location &amp; Places</h1>
-<p itemprop="description">
-    The location APIs make it easy for you to build location-aware applications, without needing to
-    focus on the details of the underlying location technology. The related Places APIs also help
-    your app identify real-world points of interest near the user.
-</p>
-<p>
-    To get started, first <a href="{@docRoot}google/play-services/setup.html">set up</a>
-    the Google Play services SDK. To learn how to identify the user's location, see
-    <a href="{@docRoot}training/location/index.html">Making Your App Location Aware</a>, or to
-    identify nearby places, see the
-<a href="https://developers.google.com/places/android">Google Places API for Android</a>
-developer guide.
-</p>
-</div>
-</div>
-<div class="landing-docs">
-  <h3 style="clear:left">Key Developer Features</h3>
-  <div class="layout-content-row normal-links">
-  <div class="layout-content-col span-6">
-
-
-
-<h4 style="font-weight:bold">Fused location provider</h4>
-
-<p>The Fused Location Provider intelligently manages the underlying location technology and gives you the best location according to your needs. </p>
-
-<ul>
-    <li>
-        <em>Simple APIs</em>: Lets you specify high-level needs like "high accuracy" or "low power", instead of
-        having to worry about location providers.
-    </li>
-    <li>
-        <em>Immediately available</em>: Gives your apps immediate access to the best, most recent location.
-    </li>
-    <li>
-        <em>Power-efficiency</em>: Minimizes your app's use of power. Based on all incoming location requests and available sensors, fused location provider chooses the most efficient way to meet those needs.
-    </li>
-    <li>
-        <em>Versatility</em>: Meets a wide range of needs, from foreground uses that need highly accurate
-        location to background uses that need periodic location updates with negligible power impact.
-    </li>
-
-</ul>
-
-<h4 style="font-weight:bold">Geofencing APIs</h4>
-
-<p>Lets your app setup geographic boundaries around specific locations and then receive notifications when the user enters or leaves those areas. </p>
-
-<ul>
-    <li>
-        <em>Simple but powerful APIs</em>: Allows batch addition and removal of geofences. Ability to manage
-        multiple geofences at the same time. Ability to filter alerts for both entry and exit or
-        entry only or exit only.
-    </li>
-    <li>
-        <em>Optimized for battery</em>: Adjusts location updates based on user’s proximity to the geofence
-        and user’s modality (still, walking, driving, and so on).
-    </li>
-</ul>
-</div>
-
-<div class="layout-content-col span-6">
-
-<h4 style="font-weight:bold">Places API</h4>
-
-<p>The <a href="https://developers.google.com/places/android/">Google
-Places API for Android</a> helps you build location-aware apps
-that respond contextually to the local businesses and other places near the
-device:</p>
-
-<ul>
-<li>Use the built-in
-  <a href="https://developers.google.com/places/android/placepicker">place
-  picker</a> UI widget, allowing users to select a place on an interactive
-  map.</li>
-<li>Identify the user's
-  <a href="https://developers.google.com/places/android/current-place">current
-  place</a>, such as a local business, point of interest, or other geographic location.</li>
-<li>Retrieve and display rich
-  <a href="https://developers.google.com/places/android/place-details">information
-  about a place</a>.</li>
-<li>Make it easy to enter place names and addresses, by
-  <a href="https://developers.google.com/places/android/autocomplete">autocompleting</a>
-  your users' queries as they type.</li>
-<li>Differentiate your app by supplying up-to-date local information, and
-  <a href="https://developers.google.com/places/android/add-place">adding
-  places</a> to Google's Places database.</li>
-</ul>
-
-
-<h4 style="font-weight:bold">Activity recognition</h4>
-
-<p>The Activity recognition API makes it easy to check the user’s current activity&mdash;still, walking, cycling, and in-vehicle&mdash;with very efficient use of the battery:</p>
-<ul>
-    <li>
-        <em>Optimized for battery</em>: Uses low-power sensors to recognize the user's current physical activity.
-    </li>
-    <li>
-        <em>Enhances other services with context</em>: Great for adding movement awareness to location awareness. Apps can adjust the amount of
-        location awareness they provide, based on the current user movement. For example, a
-        navigation app can request more frequent updates when the user is driving.
-    </li>
-    <li>
-        <em>Advanced activity detection</em>: For apps that want to do their own
-        post-processing, the activity APIs provide confidence values for each of the activities.
-        It also includes two activities that indicate unreliable measurements: unknown and tilt.
-    </li>
-</ul>
-</div>
-</div>
diff --git a/docs/html/google/play-services/maps.jd b/docs/html/google/play-services/maps.jd
deleted file mode 100644
index 9bf5f80..0000000
--- a/docs/html/google/play-services/maps.jd
+++ /dev/null
@@ -1,97 +0,0 @@
-page.title=Google Maps Android API v2
-page.tags=mapview,location
-header.hide=1
-
-@jd:body
-
-
-<div class="landing-banner">
-        
-<div class="col-6">
-  <img src="{@docRoot}images/google/gps-maps.png" alt="">
-</div>
-<div class="col-6">
-
-  <h1 itemprop="name" style="margin-bottom:0;">Google Maps Android API v2</h1>
-  <p itemprop="description">Allow your users to explore the world with rich maps provided by
-  Google. Identify locations with <b>custom markers</b>, augment the map data
-  with <b>image overlays</b>, embed <b>one or more maps</b> as fragments,
-  and much more.</p>
-  <p>Explore the <a
-href="{@docRoot}reference/com/google/android/gms/maps/package-summary.html"
->Google Maps Android API v2 reference</a> or visit <a class="external-link"
-href="https://developers.google.com/maps/documentation/android/">developers.google.com/maps</a>
-for more information about adding maps to your app.</p>
-</div>
-</div>
-
-
-
-<div class="landing-docs">
-  <div class="col-6 normal-links">
-    <h3 style="clear:left">Key Developer Features</h3>
-    <h4>Add maps to your app</h4>
-    <p>With Google Maps Android API v2, you can embed maps into an activity
-    as a fragment with a simple XML snippet. The new Maps offer exciting features such as 3D maps;
-    indoor, satellite, terrain, and hybrid maps;
-    vector-based tiles for efficient caching and drawing; animated transitions; and much more.
-    <a class="external-link" href="https://developers.google.com/maps/documentation/android/map">Add
-    a map object</a>.</p>
-    
-    <h4>Customize the map</h4>
-    <p>Add markers onto the map to indicate special points of interest for your users.
-    You can define custom colors or icons for your map markers to
-    match your app's look and feel. To further enhance the app, draw polylines
-    and polygons to indicate paths or regions, or provide complete image overlays.
-    <a class="external-link" href="https://developers.google.com/maps/documentation/android/marker">Draw
-    markers</a>.</p>
-    </a>
-    
-    <h4>Control the user's view</h4>
-    <p>Give your users a different view of the world with the ability to control the rotation, tilt,
-    zoom, and pan properties of the "camera" perspective of the map.
-    <a class="external-link" href="https://developers.google.com/maps/documentation/android/views">Change
-    the view</a>.</p>
-
-    <h4>Add Street View to your app</h4>
-    <p>Embed Street View into an activity and let your users explore the world
-      through panoramic 360-degree views. Programmatically control the zoom and
-      orientation (tilt and bearing) of the Street View camera, and animate the
-      camera movements over a given duration.
-      <a class="external-link" href="https://developers.google.com/maps/documentation/android/streetview">Add Street View</a>.</p>
-  </div>
-
-
-  <div class="col-6 normal-links">
-    <h3 style="clear:left">Getting Started</h3>
-    <h4>1. Get the Google Play services SDK</h4>
-    <p>Google Maps Android API v2 is part of the Google Play services platform.</p>
-    <p>To use Google Maps, <a href="{@docRoot}google/play-services/setup.html">set up
-      the Google Play services SDK</a>. Then see the <a class="external-link"
-      href="https://developers.google.com/maps/documentation/android/start#installing_the_google_maps_android_v2_api">
-      Getting Started guide</a> to get your API key for Maps and set up your app.
-    </p>
-            
-    <h4>2. Run the sample</h4>
-    
-    <p>Once you've installed the Google Play services package, the Google Maps sample is located in
-      <code>&lt;android-sdk&gt;/extras/google-play-services/samples/maps</code> and shows you
-      how to use the major components of Google Maps Android API v2.
-    </p>
-    
-    <h4>3. Read the documentation</h4>
-    
-    <p>Read the <a href="https://developers.google.com/maps/terms">Google Maps
-    API Terms of Service</a>.</p>
-    
-    <p>For quick access while developing your Android apps, the
-      <a href="{@docRoot}reference/com/google/android/gms/maps/package-summary.html">Google Maps
-      Android API v2 reference</a> is available here on developer.android.com.</p>
-
-    <p>Detailed documentation for Google Maps Android API v2 is available with the rest of the
-    Google Maps developer documents at <a class="external-link"
-    href="https://developers.google.com/maps/documentation/android/">developers.google.com/maps</a>.
-    </p>
-  </div>
-
-</div>
diff --git a/docs/html/google/play-services/plus.jd b/docs/html/google/play-services/plus.jd
deleted file mode 100644
index 84224e7..0000000
--- a/docs/html/google/play-services/plus.jd
+++ /dev/null
@@ -1,90 +0,0 @@
-page.title=Google+ Platform for Android
-page.tags=authentication,signin,social
-header.hide=1
-
-@jd:body
-
-
-<div class="landing-banner">
-        
-<div class="col-6">
-  <img src="{@docRoot}images/google/gps-googleplus.png" alt="">
-</div>
-<div class="col-6">
-
-  <h1 itemprop="name" style="margin-bottom:0;">Google+ Platform for Android</h1>
-  <p itemprop="description">The Google+ platform for Android lets you authenticate a user
-  with the same credentials they use on Google every day. Once a user signs in with Google,
-  you can create more engaging experiences and drive usage of your app.</p>
-  
-  <p>Explore the <a href="{@docRoot}reference/com/google/android/gms/plus/package-summary.html"
->Google+ Android API reference</a> or visit <a class="external-link"
-href="https://developers.google.com/+/mobile/android/">developers.google.com/+</a> for more
-information about integrating Google+ into your app.</p>
-</div>
-</div>
-
-<div class="landing-docs">
-  <div class="col-6 normal-links">
-    <h3 style="clear:left">Key Developer Features</h3>
-
-      <h4>Trusted authentication</h4>
-      <p>Google+ Sign-In is a simple, trusted, and secure way to let people sign in
-      to your app with their Google credentials and bring along their Google+ info.
-      <br />
-      <a href="https://developers.google.com/+/mobile/android/sign-in"
-      class="external-link">Add sign-in</a>.</p>
-
-      <h4>Access the profile and social graph</h4>
-      <p>Once users have signed in with Google, your app can welcome them by name,
-      display their picture, connect them with friends, and lots more.
-      <br />
-      <a href="https://developers.google.com/+/mobile/android/people"
-      class="external-link">Access the social graph</a>.</p>
-       
-      <h4>Stand out in the stream</h4>
-      <p>Interactive posts is a rich way of sharing to Google+. It lets users prompt friends
-      to take specific actions in your app from a Google+ post, like "listen," "RSVP," "check-in,"
-      and over 100 more actions. <br />
-      <a class="external-link"
-      href="https://developers.google.com/+/mobile/android/share">Post interactive content</a>.</p>
-
-      <h4>Recommend content</h4>
-      <p>Add a native +1 button so users can recommend content from your app. These endorsements
-      can give your app more credibility and help it grow faster.  <br />
-      <a class="external-link"
-      href="https://developers.google.com/+/mobile/android/recommend">Add the +1 button</a>.</p>
-  </div>
-
-
-  <div class="col-6 normal-links">
-    <h3 style="clear:left">Getting Started</h3>
-    <h4>1. Get the Google Play services SDK</h4>
-    <p>The Google+ Android APIs are part of the Google Play services platform.</p>
-    <p>To get started, <a href="{@docRoot}google/play-services/setup.html">set up
-      the Google Play services SDK</a>.
-    </p>
-            
-    <h4>2. Run the sample</h4>
-    <p>Once you've installed the Google Play services package, you can run the Google+ sample located in
-    <code>&lt;android-sdk&gt;/extras/google-play-services/samples/plus</code>. However, before
-    you can run the sample, you need to register your app in the Google APIs Console.</p>
-    <p>See <a class="external-link"
-      href="https://developers.google.com/+/mobile/android/getting-started">Getting Started with
-      the Google+ Platform for Android</a> for more information about how to get the sample up and 
-      running.
-    </p>
-    
-    <h4>3. Read the documentation</h4>
-    <p>Read the <a href="https://developers.google.com/+/terms">Google+ Platform
-    Terms of Service</a>.</p>
- 
-    <p>For quick access while developing your Android apps, the
-    <a href="{@docRoot}reference/com/google/android/gms/plus/package-summary.html">Google+
-    API reference</a> is available here on developer.android.com.</p>
- 
-    <p>Detailed documentation for the Google+ Android APIs is available with the rest of the
-    Google+ developer documents at <a class="external-link"
-    href="https://developers.google.com/+/mobile/android/">developers.google.com/+</a>.</p>
-  </div>
-</div>
diff --git a/docs/html/google/play-services/wallet.jd b/docs/html/google/play-services/wallet.jd
deleted file mode 100644
index 744c8d3..0000000
--- a/docs/html/google/play-services/wallet.jd
+++ /dev/null
@@ -1,87 +0,0 @@
-page.title=Google Wallet Instant Buy for Android
-page.tags=Wallet,payments,Instant Buy
-header.hide=1
-
-@jd:body
-
-<div class="landing-banner">
-<div class="col-8">
-  <h1 itemprop="name" style="margin-bottom:0;">Google Wallet Instant Buy</h1>
-  <p itemprop="description">Add fast, secure checkout for users buying physical goods and
-  services from your app.  Transactions are monitored for fraud 24/7. Keep your existing
-  payments infrastructure and integrate Google Wallet quickly, easily and free of charge.</p>
-
-  <p>To ensure that your app content is consistent with the requirements for
-    Instant Buy access, <a class="external-link" href="https://support.google.com/wallet/business/contact/interest">apply for content review</a> before
-    starting development. Note that Instant Buy is currently only
-    available to US-based merchants. Once you've completed integration, you can
-    apply for production access by <a class="external-link" href="https://support.google.com/wallet/business/contact/ui_review">submitting your sandbox integration for review</a>.</p>
-
-  <p>Check out the <a
-  href="{@docRoot}reference/com/google/android/gms/wallet/package-summary.html">Instant
-  Buy API reference</a> and visit
-  <a href="https://developers.google.com/wallet/instant-buy/">developers.google.com/wallet/instant-buy/</a>
-  for complete information about integrating Google Wallet Instant Buy into your app.</p>
-</div>
-
-<div class="col-4">
-  <img src="{@docRoot}images/google/gps-wallet-instant.png" alt="" style="padding-bottom:14px;width:210px">
-</div>
-</div>
-
-<div class="landing-docs">
-  <div class="col-6 normal-links">
-    <h3 style="clear:left">Key Developer Features</h3>
-
-      <h4>Add the "Buy with Google" button</h4>
-      <p>Easily embed a “Buy with Google” button in your flow to let customers purchase instantly
-      from your app. Customers can grant you access to their payment information with just
-      a few clicks.
-      <br />
-      <a href="https://developers.google.com/commerce/wallet/instant-buy/android/tutorial#add_google_wallet_buttons_to_your_ui"
-      class="external-link">Add a "Buy with Google" button</a>.</p>
-
-      <h4>Streamline Purchases with Google+ Sign-On</h4>
-      <p>For users ready to purchase, you can simplify the login and account creation steps
-      by adding Google+ sign in. Users can sign in with a single click and share their
-      profile information during the purchase.
-      <br />
-      <a href="https://developers.google.com/commerce/wallet/instant-buy/wallet-sso#android"
-      class="external-link">Add Google+ Sign-In for Wallet</a>.</p>
-
-      <h4>Minimize User Data Entry</h4>
-      <p>Google Wallet provides auto-completion of addresses, minimizing user data entry. You can also
-      retrieve billing and shipping addresses directly from the user’s Wallet to-do form pre-fills.<br />
-      <a class="external-link"
-      href="{@docRoot}reference/com/google/android/gms/wallet/MaskedWallet.html#getBillingAddress()">Get
-      billing addresses</a>.</p>
-  </div>
-
-
-  <div class="col-6 normal-links">
-    <h3 style="clear:left">Getting Started</h3>
-    <h4>1. Get the Google Play services SDK</h4>
-    <p>The Google Wallet Android APIs are part of the Google Play services platform.</p>
-    <p>To get started, <a href="{@docRoot}google/play-services/setup.html">set up
-      the Google Play services SDK</a>. Then see the <a class="external-link"
-      href="https://developers.google.com/commerce/wallet/instant-buy/android/tutorial">tutorial</a>
-      to learn how to set up your app.
-    </p>
-    <h4>2. Run the sample</h4>
-    <p>Once you've installed the Google Play services package, try the Google Wallet
-    sample located in <code>&lt;android-sdk&gt;/extras/google-play-services/samples/wallet</code>.
-    The sample shows you how to use the major components of the Instant Buy API.</p>
-    <p>The <a
-    class="external-link" href="https://developers.google.com/wallet/instant-buy/android/tutorial">Instant Buy Android API tutorial</a>
-    provides directions on how to get the Wallet sample up and running.</p>
-    <h4>3. Read the documentation</h4>
-    <p>For quick access while developing your Android apps, the <a
-    href="{@docRoot}reference/com/google/android/gms/wallet/package-summary.html">Google Wallet
-    API reference</a> is available here on developer.android.com.</p>
-
-    <p>Detailed documentation for the Instant Buy API is available at <a class="external-link"
-    href="https://developers.google.com/wallet/instant-buy/">developers.google.com/wallet/instant-buy/</a></p>
-
-
-  </div>
-</div>
diff --git a/docs/html/google/play/billing/billing_subscriptions.jd b/docs/html/google/play/billing/billing_subscriptions.jd
index f7df752..e412a9d 100644
--- a/docs/html/google/play/billing/billing_subscriptions.jd
+++ b/docs/html/google/play/billing/billing_subscriptions.jd
@@ -1,7 +1,7 @@
 page.title=In-app Subscriptions
 parent.title=In-app Billing
 parent.link=index.html
-page.metaDescription=Subscriptions let you sell content or features in your app with automated, recurring billing.
+page.metaDescription=Create a steady revenue stream by selling subscriptions to your content.
 page.image=/images/play_dev.jpg
 page.tags="subscriptions, billing, inapp, iap"
 meta.tags="monetization, inappbilling, subscriptions"
@@ -10,28 +10,9 @@
 <div id="qv-wrapper">
 <div id="qv">
   <h2>Quickview</h2>
-  <ul>
-    <li>Subscriptions let you sell products with automated, recurring billing
-        at a variety of intervals.</li>
-    <li>You can offer a configurable trial period for monthly and
-        annual subscriptions.</li>
-    <li>You can manage subscriptions through the Developer Console, or by using
-        the
-        <a href="https://developers.google.com/android-publisher/">Google Play
-        Developer API</a>.</li>
-    <li>Users purchase your subscriptions from inside your apps, rather than
-        directly from Google Play.</li>
-    <li>Users can renew their subscriptions while a current subscription is
-        active.</li>
-    <li>Users can upgrade or downgrade a subscription in the middle of a
-        subscription period. The old subscription's cost is pro-rated, and the
-        unused portion is applied to the replacement subscription.</li>
-    <li>You can defer billing for a particular user's subscription, to manage
-        accounts or offer rewards.</li>
-  </ul>
   <h2>In this document</h2>
   <ol>
-    <li><a href="#overview">Overview of Subscriptions</a></li>
+    <li><a href="#overview">Overview</a></li>
     <li><a href="#administering">Configuring Subscriptions Items</a></li>
     <li><a href="#cancellation">Subscription Cancellation</a></li>
     <li><a href="#payment">Payment Processing and Policies</a></li>
@@ -53,7 +34,27 @@
 specific to subscriptions, along with some strategies for the associated billing
 and business models.</p>
 
-<h2 id="overview">Overview of Subscriptions</h2>
+  <ul>
+    <li>Subscriptions let you sell products with automated, recurring billing
+        at a variety of intervals.</li>
+    <li>You can offer a configurable trial period for monthly and
+        annual subscriptions.</li>
+    <li>You can manage subscriptions through the Developer Console, or by using
+        the
+        <a href="https://developers.google.com/android-publisher/">Google Play
+        Developer API</a>.</li>
+    <li>Users purchase your subscriptions from inside your apps, rather than
+        directly from Google Play.</li>
+    <li>Users can renew their subscriptions while a current subscription is
+        active.</li>
+    <li>Users can upgrade or downgrade a subscription in the middle of a
+        subscription period. The old subscription's cost is pro-rated, and the
+        unused portion is applied to the replacement subscription.</li>
+    <li>You can defer billing for a particular user's subscription, to manage
+        accounts or offer rewards.</li>
+  </ul>
+
+<h2 id="overview">Overview</h2>
 <p>A <em>subscription</em> is a product type offered in In-app Billing that
 lets you sell content, services, or features to users from inside your app with
 recurring, automated billing at the interval you specify. You can sell subscriptions to almost
@@ -86,7 +87,7 @@
 content (for example, from your web site or another service).
 The server-side API lets you validate the status of a subscription when users
 sign into your other services. For more information about the API, see <a
-href="{@docRoot}google/play/billing/gp-purchase-status-api.html">Google Play Developer API</a>. </p>
+href="{@docRoot}google/play/developer-api.html">Google Play Developer API</a>. </p>
 
 <p>You can also build on your existing external subscriber base from inside your
 Android apps.</p>
@@ -138,7 +139,7 @@
 In-app Billing</a>.</p>
 
 <p>You can also create and manage subscriptions using the
-<a href="{@docRoot}google/play/billing/gp-purchase-status-api.html">
+<a href="{@docRoot}google/play/developer-api.html">
 Google Play Developer API</a>.</p>
 
 <h3 id="pricing">Subscription pricing</h3>
@@ -190,7 +191,7 @@
 API. Your apps can store the token locally or pass it to your backend servers,
 which can then use it to validate or cancel the subscription remotely using the
 <a
-href="{@docRoot}google/play/billing/gp-purchase-status-api.html">Google Play Developer API</a>.</p>
+href="{@docRoot}google/play/developer-api.html">Google Play Developer API</a>.</p>
 
 <p>If a recurring payment fails (for example, because the customer’s credit
 card has become invalid), the subscription does not renew. How your app is
@@ -270,7 +271,7 @@
 <h3 id="deferred-billing">Deferred Billing</h3>
 
 <p>Using the
-<a href="{@docRoot}google/play/billing/gp-purchase-status-api.html">Google
+<a href="{@docRoot}google/play/developer-api.html">Google
 Play Developer API</a>, you can defer the next billing date for a
 subscriber. The user continues to be subscribed to the content, and has full
 access to it, but is not charged during the deferral period. This allows you
@@ -416,11 +417,11 @@
 Orders</strong> page in the Play Store, or by contacting you directly.</p>
 
 <p>If you receive requests for refunds, you can use the
-<a href="{@docRoot}google/play/billing/gp-purchase-status-api.html">Google Play
+<a href="{@docRoot}google/play/developer-api.html">Google Play
 Developer API</a> or the Merchant Center to cancel the subscription, verify that it
 is already canceled, or refund the user's payment without canceling it. You
 can also use the
-<a href="{@docRoot}google/play/billing/gp-purchase-status-api.html">Google
+<a href="{@docRoot}google/play/developer-api.html">Google
 Play Developer API</a> to <em>refund and revoke</em> a
 user's subscription. If you refund and revoke a subscription, the user's
 subscription is immediately canceled, and the user's most recent subscription
@@ -512,5 +513,5 @@
 other services.</p>
 
 <p>For complete information, see
-<a href="{@docRoot}google/play/billing/gp-purchase-status-api.html">Google Play
+<a href="{@docRoot}google/play/developer-api.html">Google Play
 Developer API</a>.</p>
diff --git a/docs/html/google/play/billing/index.jd b/docs/html/google/play/billing/index.jd
index c671c71..ae6e222 100644
--- a/docs/html/google/play/billing/index.jd
+++ b/docs/html/google/play/billing/index.jd
@@ -1,5 +1,5 @@
-page.title=Google Play In-app Billing
-page.metaDescription=In-app Billing lets you sell digital content as one-time purchases or subscriptions.
+page.title=In-app Billing
+page.metaDescription=Sell digital content as one-time purchases inside your app.
 page.image=/images/play_dev.jpg
 meta.tags="monetizing, inappbilling, subscriptions"
 page.tags="billing, inapp, iap"
@@ -24,7 +24,9 @@
     period.</li>
   <li><strong>IAB Sandbox</strong>&mdash;The In-app Billing Sandbox now supports
     testing subscription purchases.</li>
-  <li><strong>IAB v2 shutdown</strong>&mdash;In-app Billing v2 API is deprecated and will be shut down in January 2015. If your app is still using In-app Billing v2, please migrate to the v3 API as soon as possible.</li>
+  <li><strong>IAB v2 shutdown</strong>&mdash;In-app Billing v2 API is deprecated
+    and will be shut down in January 2015. If your app is still using In-app Billing
+    v2, please migrate to the v3 API as soon as possible.</li>
   <li><strong>Seasonal subscriptions</strong>&mdash;You can now set up a
     recurring <a href="billing_subscriptions.html#user-billing">seasonal
     subscription</a> that starts and ends on the same date each year (for
diff --git a/docs/html/google/play/billing/gp-purchase-status-api.jd b/docs/html/google/play/developer-api.jd
similarity index 97%
rename from docs/html/google/play/billing/gp-purchase-status-api.jd
rename to docs/html/google/play/developer-api.jd
index fa0c397..6d12841 100644
--- a/docs/html/google/play/billing/gp-purchase-status-api.jd
+++ b/docs/html/google/play/developer-api.jd
@@ -1,5 +1,7 @@
 page.title=Google Play Developer API
 page.tags="In-app Billing", "Google Play", "inapp billing", "in app billing", "iab", "billing", "publishing"
+page.image=/images/play_dev.jpg
+page.metaDescription=A REST-based web service for remote app publishing and catalog management through Google Play.
 
 
 @jd:body
@@ -23,8 +25,8 @@
 
   <h2>See also</h2>
   <ol>
-    <li><a href="https://developers.google.com/android-publisher/">Google Play
-        Developer API</a> documentation</li>
+    <li><a href="https://developers.google.com/android-publisher/">
+        Developer API reference</a></li>
     <li><a href="https://support.google.com/googleplay/android-developer/answer/6071616">Google
         Help Center</a> overview of the Google Play Developer API</li>
   </ol>
@@ -52,8 +54,6 @@
 </li>
 </ul>
 
-
-
 <p>The Google Play Developer API lets you focus on designing and developing your
 app, while spending less time and effort managing your releases, even as you
 grow to new markets.</p>
diff --git a/docs/html/google/play/dist.jd b/docs/html/google/play/dist.jd
index f1ad834..02bb42b 100644
--- a/docs/html/google/play/dist.jd
+++ b/docs/html/google/play/dist.jd
@@ -9,8 +9,8 @@
 <div class="vspace size-1">
   &nbsp;
 </div>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>
       Device Filtering
     </h4>
@@ -20,7 +20,7 @@
     </p><p><a href="{@docRoot}google/play/filters.html">Learn more &raquo;</a></p>
   </div>
 
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <h4>
       Multiple APK Support
     </h4>
@@ -30,8 +30,8 @@
     </p><p><a href="{@docRoot}google/play/publishing/multiple-apks.html">Learn more &raquo;</a></p>
   </div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>
       APK Expansion files
     </h4>
@@ -42,14 +42,14 @@
     </p><a href="{@docRoot}google/play/expansion-files.html">Learn more &raquo;</a>
   </div>
 
-   <div class="layout-content-col span-6">
+   <div class="col-6">
     <h4>
       Application Licensing
     </h4>
     <p>Protect your revenue streams and integrate policies for usage into your app.
     </p><a href="{@docRoot}google/play/licensing/index.html">Learn more &raquo;</a>
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <h4>
       Google Play Developer API
     </h4>
diff --git a/docs/html/google/play/safetynet/index.jd b/docs/html/google/play/safetynet/index.jd
deleted file mode 100644
index b728ca1..0000000
--- a/docs/html/google/play/safetynet/index.jd
+++ /dev/null
@@ -1,82 +0,0 @@
-page.title=SafetyNet for Android
-page.tags=compatibility, CTS
-header.hide=1
-
-@jd:body
-
-<div>
-
-<div>
-
-<h1 itemprop="name" style="margin-bottom:0;">
-  Android SafetyNet API
-</h1>
-
-<p itemprop="description">
-  SafetyNet provides access to Google services that help you assess the health and safety of an
-  Android device. The wide variety of Android devices and configurations can make it difficult to
-  know if your app will behave as you expect on all available devices. The SafetyNet API helps you
-  determine if your app will function properly on a device by analyzing its compatibility with the
-  Android platform specifications.
-</p>
-
-</div>
-</div>
-
-<div class="landing-docs">
-  <div class="col-6 normal-links">
-    <h3 style="clear:left">Key Developer Features</h3>
-
-<h4>
-  Device Profile Compatibility Check
-</h4>
-
-<p>
-  Check if your app is running on a device that matches a device model that has passed Android
-  compatibility testing. This analysis can help you determine if your app will work as expected on
-  the device where it is installed. The service evaluates both software and hardware
-  characteristics of the device, and may use hardware roots of trust, when available.
-</p>
-
-</div>
-
-<div class="col-6 normal-links">
-<h3 style="clear:left">
-  Getting Started
-</h3>
-
-  <h4>
-    1. Review the Terms of Service
-  </h4>
-
-  <p>
-    Use of SafetyNet is governed by specific terms of service, in addition to the <a href=
-    "https://developers.google.com/terms/" class="external-link">Google APIs Terms of Service</a>.
-    Before using this API, review the <a href="{@docRoot}google/play/safetynet/start.html#tos">
-    Additional Terms of Service</a>.
-  </p>
-
-  <h4>
-    2. Get the Google Play services SDK
-  </h4>
-
-  <p>
-    SafetyNet is part of the Google Play services platform. To get started, follow the instructions
-    for <a href="{@docRoot}google/play-services/setup.html">Setting
-    up Google Play services</a>.
-  </p>
-
-  <h4>
-    3. Read the documentation
-  </h4>
-
-  <p>
-    Learn how to use SafetyNet in your app by reading the <a href=
-    "{@docRoot}google/play/safetynet/start.html">Getting Started</a> instructions. For more
-    details on the API, see the <a href=
-    "{@docRoot}reference/com/google/android/gms/safetynet/package-summary.html">
-    SafetyNet</a> reference documentation.
-  </p>
-
-</div>
-</div>
diff --git a/docs/html/guide/index.jd b/docs/html/guide/index.jd
index cb4f65c..1c124aa 100644
--- a/docs/html/guide/index.jd
+++ b/docs/html/guide/index.jd
@@ -3,7 +3,7 @@
 @jd:body
 
 
-<div class="sidebox" style="width:220px"><!-- width to match col-4 below -->
+<div class="sidebox" style="max-width:30%"><!-- width to match col-4 below -->
 <p>To learn how apps work, start with
 <a href="{@docRoot}guide/components/fundamentals.html">App Fundamentals</a>.</p>
 <p>To begin coding right away, read <a
@@ -18,9 +18,9 @@
 the following fundamental concepts about the Android app framework:</p>
 
 
-<div class="landing-banner">
-
-<div class="col-6">
+<div class="wrap">
+  <div class="cols">
+    <div class="col-1of2">
 
 <h4>Apps provide multiple entry points</h4>
 
@@ -45,7 +45,7 @@
 </div>
 
 
-<div class="col-6">
+<div class="col-1of2">
 
 <h4>Apps adapt to different devices</h4>
 
@@ -69,7 +69,8 @@
 
 </div>
 
-</div><!-- end landing-banner -->
+</div>
+</div>
 
 
 
diff --git a/docs/html/images/cards/adwords_2x.jpg b/docs/html/images/cards/adwords_2x.jpg
new file mode 100644
index 0000000..cd83b26
--- /dev/null
+++ b/docs/html/images/cards/adwords_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/analytics-mobile_2x.jpg b/docs/html/images/cards/analytics-mobile_2x.jpg
new file mode 100644
index 0000000..e668991
--- /dev/null
+++ b/docs/html/images/cards/analytics-mobile_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/android-auto_2x.png b/docs/html/images/cards/android-auto_2x.png
new file mode 100644
index 0000000..6acdcb1
--- /dev/null
+++ b/docs/html/images/cards/android-auto_2x.png
Binary files differ
diff --git a/docs/html/images/cards/android-devices_2x.jpg b/docs/html/images/cards/android-devices_2x.jpg
new file mode 100644
index 0000000..cefff15
--- /dev/null
+++ b/docs/html/images/cards/android-devices_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/android-studio_2x.png b/docs/html/images/cards/android-studio_2x.png
new file mode 100644
index 0000000..87f9e70
--- /dev/null
+++ b/docs/html/images/cards/android-studio_2x.png
Binary files differ
diff --git a/docs/html/images/cards/android-tv_2x.png b/docs/html/images/cards/android-tv_2x.png
new file mode 100644
index 0000000..deb41a2
--- /dev/null
+++ b/docs/html/images/cards/android-tv_2x.png
Binary files differ
diff --git a/docs/html/images/cards/android-wear-apps_2x.jpg b/docs/html/images/cards/android-wear-apps_2x.jpg
new file mode 100644
index 0000000..614ef19
--- /dev/null
+++ b/docs/html/images/cards/android-wear-apps_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/android-wear-materials_2x.jpg b/docs/html/images/cards/android-wear-materials_2x.jpg
new file mode 100644
index 0000000..19a78c3
--- /dev/null
+++ b/docs/html/images/cards/android-wear-materials_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/android-wear_2x.png b/docs/html/images/cards/android-wear_2x.png
new file mode 100644
index 0000000..5d1a796
--- /dev/null
+++ b/docs/html/images/cards/android-wear_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-analytics_2x.png b/docs/html/images/cards/card-analytics_2x.png
new file mode 100644
index 0000000..da62659
--- /dev/null
+++ b/docs/html/images/cards/card-analytics_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-android-fundamentals_16x9_2x.png b/docs/html/images/cards/card-android-fundamentals_16x9_2x.png
new file mode 100644
index 0000000..64d1fa5
--- /dev/null
+++ b/docs/html/images/cards/card-android-fundamentals_16x9_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-android-studio-overview_16x9_2x.jpg b/docs/html/images/cards/card-android-studio-overview_16x9_2x.jpg
new file mode 100644
index 0000000..c0ef659
--- /dev/null
+++ b/docs/html/images/cards/card-android-studio-overview_16x9_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/card-android-work_2x.png b/docs/html/images/cards/card-android-work_2x.png
new file mode 100644
index 0000000..ac8b9280
--- /dev/null
+++ b/docs/html/images/cards/card-android-work_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-build_16x9_2x.png b/docs/html/images/cards/card-build_16x9_2x.png
new file mode 100644
index 0000000..1fdbf89
--- /dev/null
+++ b/docs/html/images/cards/card-build_16x9_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-cardboard_2x.png b/docs/html/images/cards/card-cardboard_2x.png
new file mode 100644
index 0000000..72903f9
--- /dev/null
+++ b/docs/html/images/cards/card-cardboard_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-cast_2x.jpg b/docs/html/images/cards/card-cast_2x.jpg
new file mode 100644
index 0000000..699048d
--- /dev/null
+++ b/docs/html/images/cards/card-cast_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/card-download_16-9_2x.png b/docs/html/images/cards/card-download_16-9_2x.png
new file mode 100644
index 0000000..06642b4
--- /dev/null
+++ b/docs/html/images/cards/card-download_16-9_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-earn_16x9_2x.png b/docs/html/images/cards/card-earn_16x9_2x.png
new file mode 100644
index 0000000..1b96c83
--- /dev/null
+++ b/docs/html/images/cards/card-earn_16x9_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-engage_16x9_2x.png b/docs/html/images/cards/card-engage_16x9_2x.png
new file mode 100644
index 0000000..334420b
--- /dev/null
+++ b/docs/html/images/cards/card-engage_16x9_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-g-play-services_16x9_2x.jpg b/docs/html/images/cards/card-g-play-services_16x9_2x.jpg
new file mode 100644
index 0000000..a2805a6
--- /dev/null
+++ b/docs/html/images/cards/card-g-play-services_16x9_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/card-key-changes_16-9_2x.png b/docs/html/images/cards/card-key-changes_16-9_2x.png
new file mode 100644
index 0000000..1629b4f
--- /dev/null
+++ b/docs/html/images/cards/card-key-changes_16-9_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-material-icons-16x9_2x.jpg b/docs/html/images/cards/card-material-icons-16x9_2x.jpg
new file mode 100644
index 0000000..016932c
--- /dev/null
+++ b/docs/html/images/cards/card-material-icons-16x9_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/card-new_16x9_2x.png b/docs/html/images/cards/card-new_16x9_2x.png
new file mode 100644
index 0000000..270f4a3
--- /dev/null
+++ b/docs/html/images/cards/card-new_16x9_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-places_2x.png b/docs/html/images/cards/card-places_2x.png
new file mode 100644
index 0000000..a9b468c
--- /dev/null
+++ b/docs/html/images/cards/card-places_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-preview_16-9_2x.png b/docs/html/images/cards/card-preview_16-9_2x.png
new file mode 100644
index 0000000..dd80f6a
--- /dev/null
+++ b/docs/html/images/cards/card-preview_16-9_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-set-up_16-9_2x.png b/docs/html/images/cards/card-set-up_16-9_2x.png
new file mode 100644
index 0000000..0283801
--- /dev/null
+++ b/docs/html/images/cards/card-set-up_16-9_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-support_16-9_2x.png b/docs/html/images/cards/card-support_16-9_2x.png
new file mode 100644
index 0000000..08b3290
--- /dev/null
+++ b/docs/html/images/cards/card-support_16-9_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-ubiquitous-computing_16x9_2x.png b/docs/html/images/cards/card-ubiquitous-computing_16x9_2x.png
new file mode 100644
index 0000000..5edff62
--- /dev/null
+++ b/docs/html/images/cards/card-ubiquitous-computing_16x9_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-using-code-templates_16x9_2x.png b/docs/html/images/cards/card-using-code-templates_16x9_2x.png
new file mode 100644
index 0000000..1496306
--- /dev/null
+++ b/docs/html/images/cards/card-using-code-templates_16x9_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-youtube_2x.png b/docs/html/images/cards/card-youtube_2x.png
new file mode 100644
index 0000000..28bdd89
--- /dev/null
+++ b/docs/html/images/cards/card-youtube_2x.png
Binary files differ
diff --git a/docs/html/images/cards/cloud-platform_2x.png b/docs/html/images/cards/cloud-platform_2x.png
new file mode 100644
index 0000000..d3c203d
--- /dev/null
+++ b/docs/html/images/cards/cloud-platform_2x.png
Binary files differ
diff --git a/docs/html/images/cards/course-nanodegree-lg_2x.jpg b/docs/html/images/cards/course-nanodegree-lg_2x.jpg
new file mode 100644
index 0000000..c32769b
--- /dev/null
+++ b/docs/html/images/cards/course-nanodegree-lg_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/course-nanodegree_2x.jpg b/docs/html/images/cards/course-nanodegree_2x.jpg
new file mode 100644
index 0000000..db3702b
--- /dev/null
+++ b/docs/html/images/cards/course-nanodegree_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/course-ud825.png b/docs/html/images/cards/course-ud825.png
new file mode 100644
index 0000000..77f98b5
--- /dev/null
+++ b/docs/html/images/cards/course-ud825.png
Binary files differ
diff --git a/docs/html/images/cards/course-ud837_2x.jpg b/docs/html/images/cards/course-ud837_2x.jpg
new file mode 100644
index 0000000..2dfcabf
--- /dev/null
+++ b/docs/html/images/cards/course-ud837_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/course-ud849.jpg b/docs/html/images/cards/course-ud849.jpg
new file mode 100644
index 0000000..41b7ecf
--- /dev/null
+++ b/docs/html/images/cards/course-ud849.jpg
Binary files differ
diff --git a/docs/html/images/cards/course-ud853.jpg b/docs/html/images/cards/course-ud853.jpg
new file mode 100644
index 0000000..94adfb0
--- /dev/null
+++ b/docs/html/images/cards/course-ud853.jpg
Binary files differ
diff --git a/docs/html/images/cards/course-ud855_2x.jpg b/docs/html/images/cards/course-ud855_2x.jpg
new file mode 100644
index 0000000..bc9c3ee
--- /dev/null
+++ b/docs/html/images/cards/course-ud855_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/course-ud862_2x.jpg b/docs/html/images/cards/course-ud862_2x.jpg
new file mode 100644
index 0000000..d3e77ff
--- /dev/null
+++ b/docs/html/images/cards/course-ud862_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/course-ud867_2x.jpg b/docs/html/images/cards/course-ud867_2x.jpg
new file mode 100644
index 0000000..2467efb
--- /dev/null
+++ b/docs/html/images/cards/course-ud867_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/course-ud875_2x.jpg b/docs/html/images/cards/course-ud875_2x.jpg
new file mode 100644
index 0000000..b7fc8cc
--- /dev/null
+++ b/docs/html/images/cards/course-ud875_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/course-ud876_2x.jpg b/docs/html/images/cards/course-ud876_2x.jpg
new file mode 100644
index 0000000..5f27246
--- /dev/null
+++ b/docs/html/images/cards/course-ud876_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/design-creative-vision_2x.jpg b/docs/html/images/cards/design-creative-vision_2x.jpg
new file mode 100644
index 0000000..9c7dde3
--- /dev/null
+++ b/docs/html/images/cards/design-creative-vision_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/design-material-for-android_2x.jpg b/docs/html/images/cards/design-material-for-android_2x.jpg
new file mode 100644
index 0000000..e47594a
--- /dev/null
+++ b/docs/html/images/cards/design-material-for-android_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/design-new-in-android_2x.jpg b/docs/html/images/cards/design-new-in-android_2x.jpg
new file mode 100644
index 0000000..3bdd542
--- /dev/null
+++ b/docs/html/images/cards/design-new-in-android_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/design-pure-android_2x.png b/docs/html/images/cards/design-pure-android_2x.png
new file mode 100644
index 0000000..94758f7
--- /dev/null
+++ b/docs/html/images/cards/design-pure-android_2x.png
Binary files differ
diff --git a/docs/html/images/cards/dev-console_2x.jpg b/docs/html/images/cards/dev-console_2x.jpg
new file mode 100644
index 0000000..f2d10eb
--- /dev/null
+++ b/docs/html/images/cards/dev-console_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/google-play_2x.png b/docs/html/images/cards/google-play_2x.png
new file mode 100644
index 0000000..8680639
--- /dev/null
+++ b/docs/html/images/cards/google-play_2x.png
Binary files differ
diff --git a/docs/html/images/cards/google-search_2x.png b/docs/html/images/cards/google-search_2x.png
new file mode 100644
index 0000000..2564121
--- /dev/null
+++ b/docs/html/images/cards/google-search_2x.png
Binary files differ
diff --git a/docs/html/images/cards/google-sign-in_2x.png b/docs/html/images/cards/google-sign-in_2x.png
new file mode 100644
index 0000000..60078a7
--- /dev/null
+++ b/docs/html/images/cards/google-sign-in_2x.png
Binary files differ
diff --git a/docs/html/images/cards/material-animation_2x.png b/docs/html/images/cards/material-animation_2x.png
new file mode 100644
index 0000000..79315e4
--- /dev/null
+++ b/docs/html/images/cards/material-animation_2x.png
Binary files differ
diff --git a/docs/html/images/cards/material-color-palette_2x.jpg b/docs/html/images/cards/material-color-palette_2x.jpg
new file mode 100644
index 0000000..bae8d07
--- /dev/null
+++ b/docs/html/images/cards/material-color-palette_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/material-components_2x.jpg b/docs/html/images/cards/material-components_2x.jpg
new file mode 100644
index 0000000..7ac1012
--- /dev/null
+++ b/docs/html/images/cards/material-components_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/material-layout-template_2x.jpg b/docs/html/images/cards/material-layout-template_2x.jpg
new file mode 100644
index 0000000..d2fa3c5
--- /dev/null
+++ b/docs/html/images/cards/material-layout-template_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/material-layout_2x.png b/docs/html/images/cards/material-layout_2x.png
new file mode 100644
index 0000000..6c5dca1
--- /dev/null
+++ b/docs/html/images/cards/material-layout_2x.png
Binary files differ
diff --git a/docs/html/images/cards/material-patterns_2x.png b/docs/html/images/cards/material-patterns_2x.png
new file mode 100644
index 0000000..8e8d8aa
--- /dev/null
+++ b/docs/html/images/cards/material-patterns_2x.png
Binary files differ
diff --git a/docs/html/images/cards/material-sticker-sheet_2x.jpg b/docs/html/images/cards/material-sticker-sheet_2x.jpg
new file mode 100644
index 0000000..8e9f3f7c
--- /dev/null
+++ b/docs/html/images/cards/material-sticker-sheet_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/material-style_2x.jpg b/docs/html/images/cards/material-style_2x.jpg
new file mode 100644
index 0000000..38ae540
--- /dev/null
+++ b/docs/html/images/cards/material-style_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/material-typography_2x.jpg b/docs/html/images/cards/material-typography_2x.jpg
new file mode 100644
index 0000000..537db8e
--- /dev/null
+++ b/docs/html/images/cards/material-typography_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/material-usability_2x.png b/docs/html/images/cards/material-usability_2x.png
new file mode 100644
index 0000000..468e1c8
--- /dev/null
+++ b/docs/html/images/cards/material-usability_2x.png
Binary files differ
diff --git a/docs/html/images/cards/material_2x.png b/docs/html/images/cards/material_2x.png
new file mode 100644
index 0000000..e759d9f
--- /dev/null
+++ b/docs/html/images/cards/material_2x.png
Binary files differ
diff --git a/docs/html/images/cards/program-edu_2x.jpg b/docs/html/images/cards/program-edu_2x.jpg
new file mode 100644
index 0000000..4430dfd
--- /dev/null
+++ b/docs/html/images/cards/program-edu_2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/samples-new_2x.png b/docs/html/images/cards/samples-new_2x.png
new file mode 100644
index 0000000..270f4a3
--- /dev/null
+++ b/docs/html/images/cards/samples-new_2x.png
Binary files differ
diff --git a/docs/html/images/develop/hero-android-studio-on-device.png b/docs/html/images/develop/hero-android-studio-on-device.png
new file mode 100644
index 0000000..eac0e1f
--- /dev/null
+++ b/docs/html/images/develop/hero-android-studio-on-device.png
Binary files differ
diff --git a/docs/html/images/develop/hero_image_studio5.png b/docs/html/images/develop/hero_image_studio5.png
new file mode 100644
index 0000000..08fa57c
--- /dev/null
+++ b/docs/html/images/develop/hero_image_studio5.png
Binary files differ
diff --git a/docs/html/images/develop/hero_image_studio5_2x.png b/docs/html/images/develop/hero_image_studio5_2x.png
new file mode 100644
index 0000000..f119749
--- /dev/null
+++ b/docs/html/images/develop/hero_image_studio5_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/android-work.jpg b/docs/html/images/distribute/android-work.jpg
new file mode 100644
index 0000000..91f742b
--- /dev/null
+++ b/docs/html/images/distribute/android-work.jpg
Binary files differ
diff --git a/docs/html/images/distribute/app-indexing-deep-links.png b/docs/html/images/distribute/app-indexing-deep-links.png
new file mode 100644
index 0000000..8ea8071
--- /dev/null
+++ b/docs/html/images/distribute/app-indexing-deep-links.png
Binary files differ
diff --git a/docs/html/images/distribute/appindexing.gif b/docs/html/images/distribute/appindexing.gif
new file mode 100644
index 0000000..6015d14
--- /dev/null
+++ b/docs/html/images/distribute/appindexing.gif
Binary files differ
diff --git a/docs/html/images/distribute/cardboard.jpg b/docs/html/images/distribute/cardboard.jpg
new file mode 100644
index 0000000..36b39db
--- /dev/null
+++ b/docs/html/images/distribute/cardboard.jpg
Binary files differ
diff --git a/docs/html/images/distribute/cast.jpg b/docs/html/images/distribute/cast.jpg
new file mode 100644
index 0000000..d5e4a32
--- /dev/null
+++ b/docs/html/images/distribute/cast.jpg
Binary files differ
diff --git a/docs/html/images/distribute/engage-intents.png b/docs/html/images/distribute/engage-intents.png
new file mode 100644
index 0000000..2889c08
--- /dev/null
+++ b/docs/html/images/distribute/engage-intents.png
Binary files differ
diff --git a/docs/html/images/distribute/google-now-engagement.png b/docs/html/images/distribute/google-now-engagement.png
new file mode 100644
index 0000000..416247b
--- /dev/null
+++ b/docs/html/images/distribute/google-now-engagement.png
Binary files differ
diff --git a/docs/html/images/distribute/google-play-bg.jpg b/docs/html/images/distribute/google-play-bg.jpg
new file mode 100644
index 0000000..effd422
--- /dev/null
+++ b/docs/html/images/distribute/google-play-bg.jpg
Binary files differ
diff --git a/docs/html/images/distribute/gpfw_business.png b/docs/html/images/distribute/gpfw_business.png
new file mode 100644
index 0000000..d395b4e
--- /dev/null
+++ b/docs/html/images/distribute/gpfw_business.png
Binary files differ
diff --git a/docs/html/images/distribute/gpfw_developer.png b/docs/html/images/distribute/gpfw_developer.png
new file mode 100644
index 0000000..c0f0d26
--- /dev/null
+++ b/docs/html/images/distribute/gpfw_developer.png
Binary files differ
diff --git a/docs/html/images/distribute/hero-family.jpg b/docs/html/images/distribute/hero-family.jpg
new file mode 100644
index 0000000..6e467a5
--- /dev/null
+++ b/docs/html/images/distribute/hero-family.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-g-play-guidebooks_2x.png b/docs/html/images/distribute/hero-g-play-guidebooks_2x.png
new file mode 100644
index 0000000..3dfda18
--- /dev/null
+++ b/docs/html/images/distribute/hero-g-play-guidebooks_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/hero-ginlemon.jpg b/docs/html/images/distribute/hero-ginlemon.jpg
new file mode 100644
index 0000000..11837b3
--- /dev/null
+++ b/docs/html/images/distribute/hero-ginlemon.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-haystack.jpg b/docs/html/images/distribute/hero-haystack.jpg
new file mode 100644
index 0000000..36b6d9f
--- /dev/null
+++ b/docs/html/images/distribute/hero-haystack.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-jelly-button.jpg b/docs/html/images/distribute/hero-jelly-button.jpg
new file mode 100644
index 0000000..032755b
--- /dev/null
+++ b/docs/html/images/distribute/hero-jelly-button.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-outfit7.jpg b/docs/html/images/distribute/hero-outfit7.jpg
new file mode 100644
index 0000000..a013417a
--- /dev/null
+++ b/docs/html/images/distribute/hero-outfit7.jpg
Binary files differ
diff --git a/docs/html/images/distribute/house-ads.png b/docs/html/images/distribute/house-ads.png
new file mode 100644
index 0000000..f4df870
--- /dev/null
+++ b/docs/html/images/distribute/house-ads.png
Binary files differ
diff --git a/docs/html/images/distribute/more-app-engagement.png b/docs/html/images/distribute/more-app-engagement.png
new file mode 100644
index 0000000..31cbede
--- /dev/null
+++ b/docs/html/images/distribute/more-app-engagement.png
Binary files differ
diff --git a/docs/html/images/distribute/music-action.png b/docs/html/images/distribute/music-action.png
new file mode 100644
index 0000000..24d6dc8
--- /dev/null
+++ b/docs/html/images/distribute/music-action.png
Binary files differ
diff --git a/docs/html/images/distribute/ota-installs.gif b/docs/html/images/distribute/ota-installs.gif
new file mode 100644
index 0000000..85e40da
--- /dev/null
+++ b/docs/html/images/distribute/ota-installs.gif
Binary files differ
diff --git a/docs/html/images/distribute/promote-ads-apps.png b/docs/html/images/distribute/promote-ads-apps.png
new file mode 100644
index 0000000..9009a37
--- /dev/null
+++ b/docs/html/images/distribute/promote-ads-apps.png
Binary files differ
diff --git a/docs/html/images/distribute/promote-ads-web.png b/docs/html/images/distribute/promote-ads-web.png
new file mode 100644
index 0000000..2f9630e
--- /dev/null
+++ b/docs/html/images/distribute/promote-ads-web.png
Binary files differ
diff --git a/docs/html/images/distribute/promote_ads.png b/docs/html/images/distribute/promote_ads.png
new file mode 100644
index 0000000..38517aa
--- /dev/null
+++ b/docs/html/images/distribute/promote_ads.png
Binary files differ
diff --git a/docs/html/images/distribute/promote_ads_apps.png b/docs/html/images/distribute/promote_ads_apps.png
new file mode 100644
index 0000000..2f57865
--- /dev/null
+++ b/docs/html/images/distribute/promote_ads_apps.png
Binary files differ
diff --git a/docs/html/images/distribute/promote_ads_gmail.png b/docs/html/images/distribute/promote_ads_gmail.png
new file mode 100644
index 0000000..1d21b4a
--- /dev/null
+++ b/docs/html/images/distribute/promote_ads_gmail.png
Binary files differ
diff --git a/docs/html/images/distribute/promote_ads_inapp.png b/docs/html/images/distribute/promote_ads_inapp.png
new file mode 100644
index 0000000..8aeee57
--- /dev/null
+++ b/docs/html/images/distribute/promote_ads_inapp.png
Binary files differ
diff --git a/docs/html/images/distribute/promote_ads_play.png b/docs/html/images/distribute/promote_ads_play.png
new file mode 100644
index 0000000..1cf51b2
--- /dev/null
+++ b/docs/html/images/distribute/promote_ads_play.png
Binary files differ
diff --git a/docs/html/images/distribute/promote_ads_search.png b/docs/html/images/distribute/promote_ads_search.png
new file mode 100644
index 0000000..27c0b38
--- /dev/null
+++ b/docs/html/images/distribute/promote_ads_search.png
Binary files differ
diff --git a/docs/html/images/distribute/promote_ads_web.png b/docs/html/images/distribute/promote_ads_web.png
new file mode 100644
index 0000000..588a3d4
--- /dev/null
+++ b/docs/html/images/distribute/promote_ads_web.png
Binary files differ
diff --git a/docs/html/images/distribute/promote_ads_youtube.png b/docs/html/images/distribute/promote_ads_youtube.png
new file mode 100644
index 0000000..e88a796
--- /dev/null
+++ b/docs/html/images/distribute/promote_ads_youtube.png
Binary files differ
diff --git a/docs/html/images/distribute/signin-apps.png b/docs/html/images/distribute/signin-apps.png
new file mode 100644
index 0000000..9891acd
--- /dev/null
+++ b/docs/html/images/distribute/signin-apps.png
Binary files differ
diff --git a/docs/html/images/distribute/signin-seamless.png b/docs/html/images/distribute/signin-seamless.png
new file mode 100644
index 0000000..01b9d73
--- /dev/null
+++ b/docs/html/images/distribute/signin-seamless.png
Binary files differ
diff --git a/docs/html/images/distribute/signin-secure.png b/docs/html/images/distribute/signin-secure.png
new file mode 100644
index 0000000..3baad23
--- /dev/null
+++ b/docs/html/images/distribute/signin-secure.png
Binary files differ
diff --git a/docs/html/images/distribute/voice-actions-engagement.png b/docs/html/images/distribute/voice-actions-engagement.png
new file mode 100644
index 0000000..63a2605
--- /dev/null
+++ b/docs/html/images/distribute/voice-actions-engagement.png
Binary files differ
diff --git a/docs/html/images/distribute/youtube-card-example.png b/docs/html/images/distribute/youtube-card-example.png
new file mode 100644
index 0000000..e5d77f9
--- /dev/null
+++ b/docs/html/images/distribute/youtube-card-example.png
Binary files differ
diff --git a/docs/html/images/home/devices-hero_620px_2x.png b/docs/html/images/home/devices-hero_620px_2x.png
new file mode 100644
index 0000000..273706e
--- /dev/null
+++ b/docs/html/images/home/devices-hero_620px_2x.png
Binary files differ
diff --git a/docs/html/images/home/hero-lollipop_2x.png b/docs/html/images/home/hero-lollipop_2x.png
new file mode 100644
index 0000000..6f41e13
--- /dev/null
+++ b/docs/html/images/home/hero-lollipop_2x.png
Binary files differ
diff --git a/docs/html/images/play_dev.jpg b/docs/html/images/play_dev.jpg
index 6aae165..92513b7 100644
--- a/docs/html/images/play_dev.jpg
+++ b/docs/html/images/play_dev.jpg
Binary files differ
diff --git a/docs/html/images/play_dev_old.jpg b/docs/html/images/play_dev_old.jpg
new file mode 100644
index 0000000..6aae165
--- /dev/null
+++ b/docs/html/images/play_dev_old.jpg
Binary files differ
diff --git a/docs/html/images/versions/notification-headsup.png b/docs/html/images/versions/notification-headsup.png
index 7c374c8..623b225 100644
--- a/docs/html/images/versions/notification-headsup.png
+++ b/docs/html/images/versions/notification-headsup.png
Binary files differ
diff --git a/docs/html/images/versions/rivalknights.png b/docs/html/images/versions/rivalknights.png
index 6b467ef..6137fc4 100644
--- a/docs/html/images/versions/rivalknights.png
+++ b/docs/html/images/versions/rivalknights.png
Binary files differ
diff --git a/docs/html/index.jd b/docs/html/index.jd
index 2838959..70274eb 100644
--- a/docs/html/index.jd
+++ b/docs/html/index.jd
@@ -1,101 +1,85 @@
 fullpage=true
-page.viewport_width=970
 excludeFromSuggestions=true
 page.metaDescription=The official site for Android developers. Provides the Android SDK and documentation for app developers and designers.
 page.customHeadTag=<meta name="google-site-verification" content="sa-bIAI6GKvct3f61-WpRguHq-aNjtF7xJjMTSi79as" />
 
 @jd:body
 
-<div class="home-new-carousel-1">
-  <div class="fullscreen-carousel-content">
-    <div class="vcenter">
-      <div class="wrap clearfix">
+<!-- <div class="dac-hero-carousel" data-carousel-query="collection:index/carousel">
+</div> -->
 
-        <div class="static resource-flow-layout wrap col-16">
-          <div class="resource resource-card resource-card-18x6">
+<article class="dac-expand dac-hero dac-invert active" style="background-color: rgb(38, 50, 56);">
+<a class="dac-hero-carousel-action" href="{@docRoot}preview/index.html">
+  <div class="wrap" style="max-width:1100px;">
+    <div class="cols dac-hero-content">
+      <div class="col-10of16 col-push-6of16 dac-hero-figure">
+        <img src="{@docRoot}images/home/devices-hero_620px_2x.png">
+      </div>
+      <div class="col-6of16 col-pull-10of16">
+        <div class="dac-hero-tag"></div>
 
-      <div class="landing-section-header">
-            <div class="col-10"><img src="{@docRoot}images/home/l-hero_2x.png"
-                 srcset="{@docRoot}images/home/l-hero.png 1x, {@docRoot}images/home/l-hero_2x.png 2x"
-                 width="510" style="margin:20px 30px 0 30px"></div>
-            <div class="col-5" style=" margin-top:70px ">
-            <h3 stye="font-weight:300;">Android 5.0 Lollipop</h3>
-            <p>The Android 5.0 update adds a variety of new
-            features for your apps, such as notifications on the lock screen, an all-new camera API,
-            OpenGL ES 3.1, the new Material design interface, and much more.</p>
-            <a href="{@docRoot}about/versions/lollipop.html" class="landing-button landing-primary">Learn More</a>
-            </div>
-          </div>
-          </div>
-        </div>
-       <h2>&nbsp;</h2>
-        <div style="margin-top:20px;height:115px" class="resource-widget resource-flow-layout wrap col-16
-        no-section" data-query="collection:index/primary" data-resourcestyle="card"
-        data-sortorder="-timestamp" data-maxresults="3" data-cardsizes="6x2,6x2,6x2"></div> <!-- end .resource-widget -->
-      </div> <!-- end .wrap -->
-    </div> <!-- end .vcenter -->
-  </div> <!-- end .fullscreen-carousel-content -->
-</div> <!-- end .fullscreen-carousel -->
+        <h1 class="dac-hero-title">Android M Developer Preview</h1>
+        <p class="dac-hero-description">Get your apps ready for the next version
+        of Android. Test on Nexus 5, 6, 9, and Player. </p>
 
-<div class="actions-bar" style="margin-top:20px">
-  <div class="wrap">
+        <a class="dac-hero-cta" href="{@docRoot}preview/index.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Learn more
+        </a>
+      </div>
+    </div>
+  </div>
+</a>
+</article>
+
+<div class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+    <a class="dac-fab dac-scroll-button" data-scroll-button href="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
     <div class="actions">
-      <div><a href="{@docRoot}sdk/index.html">Get the SDK</a></div>
-      <div><a href="{@docRoot}samples/index.html">Browse Samples</a></div>
-      <div><a href="//www.youtube.com/user/androiddevelopers">Watch Videos</a></div>
-      <div><a href="{@docRoot}distribute/googleplay/developer-console.html">Manage Your Apps</a></div>
+      <div><a href="{@docRoot}sdk/index.html">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Get the SDK
+      </a></div>
+      <div><a href="{@docRoot}samples/index.html">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Browse Samples
+      </a></div>
+      <div><a href="//www.youtube.com/user/androiddevelopers">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Watch Videos
+      </a></div>
     </div><!-- end .actions -->
   </div><!-- end .wrap -->
 </div><!-- end .actions-bar -->
 
 
 
-<div class="landing-rest-of-page">
-  <div class="landing-section">
-    <div class="wrap">
-      <div class="landing-section-header">
+<section class="dac-section dac-section-light" id="build-apps"><div class="wrap">
+  <h1 class="dac-section-title">Build Beautiful Apps</h1>
+  <div class="dac-section-subtitle">
+    Resources to get you started with designing and developing for Android.
+  </div>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:index/primary"
+       data-cardSizes="6x6"
+       data-maxResults="3"></div>
+</div></section>
 
-            <div class="landing-h1" style="margin-top:0px">Build for a Multi-Screen World</div>
-        <div class="landing-subhead" style="margin-top: 20px;">
-          Android runs on hundreds of millions of handheld devices around the world, <br>
-          and it now supports these exciting, new form-factors.
-        </div>
-      </div>
-      <div class="landing-body" style="margin-top: 50px;">
-        <div class="landing-breakout cols">
-          <div class="col-3-wide">
-              <img src="{@docRoot}images/home/wear-wordmark.png">
-              <img src="{@docRoot}images/home/wear.png">
-              <p class="landing-small">
-                Provide information on-the-go for your users, whenever they need it.
-            </p>
-            <p class="landing-small">
-              <a href="{@docRoot}wear/index.html">Learn about Android Wear</a>
-            </p>
-          </div>
-          <div class="col-3-wide">
-              <img src="{@docRoot}images/home/tv-wordmark.png">
-             <img src="{@docRoot}images/home/tv.png">
-              <p class="landing-small">
-                Build your apps for the big screen and bring your content to life.
-              </p>
-            <p class="landing-small">
-              <a href="{@docRoot}tv/index.html">Learn about Android TV</a>
+<div class="dac-hero-carousel" data-carousel-query="collection:distribute/landing/carousel">
+</div>
 
-            </p>
-          </div>
-          <div class="col-3-wide">
-              <img src="{@docRoot}images/home/auto-wordmark.png">
-              <img src="{@docRoot}images/home/auto.png">
-              <p class="landing-small">
-                Extend your music apps to automobile
-                entertainment systems.
-             </p>
-            <p class="landing-small">
-              <a href="{@docRoot}auto/index.html">Learn about Android Auto</a>
-            </p>
-          </div>
-        </div>
-      </div>
-    </div>  <!-- end .wrap -->
-  </div> <!-- end .landing-section -->
\ No newline at end of file
+<section class="dac-section dac-gray"><div class="wrap">
+  <div class="cols"><div class="col-10of12 col-push-1of12">
+    <h1 class="dac-section-title">Build for a Multi-Screen World</h1>
+    <div class="dac-section-subtitle">
+      Android runs on billions of handheld devices around the world,
+      and it now supports these exciting, new form-factors.
+    </div>
+  </div></div>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:index/multiscreen"
+       data-cardSizes="6x6"
+       data-maxResults="3"></div>
+</div></section>
diff --git a/docs/html/jd_collections.js b/docs/html/jd_collections.js
index e2d0eb9..421f87a 100644
--- a/docs/html/jd_collections.js
+++ b/docs/html/jd_collections.js
@@ -1,4 +1,10 @@
 var RESOURCE_COLLECTIONS = {
+  "index/carousel": {
+    "title": "",
+    "resources": [
+      "about/versions/lollipop.html"
+    ]
+  },
   "index/primary": {
     "title": "",
     "resources": [
@@ -7,6 +13,14 @@
       "sdk/index.html"
     ]
   },
+  "index/multiscreen": {
+    "title": "",
+    "resources": [
+      "wear/index.html",
+      "tv/index.html",
+      "auto/index.html"
+    ]
+  },
   "index/primary/zhcn": {
     "title": "",
     "resources": [
@@ -15,6 +29,173 @@
       "intl/zh-cn/distribute/tools/localization-checklist.html"
     ]
   },
+  "design/landing/latest": {
+    "title": "",
+    "resources": [
+      "http://www.youtube.com/watch?v=p4gmvHyuZzw",
+      "http://www.youtube.com/watch?v=YaG_ljfzeUw",
+      "http://www.youtube.com/watch?v=XOcCOBe8PTc"
+    ]
+  },
+  "design/landing/materialdesign": {
+    "title": "",
+    "resources": [
+      "https://www.google.com/design/spec/animation/",
+      "https://www.google.com/design/spec/style/",
+      "https://www.google.com/design/spec/layout/",
+      "https://www.google.com/design/spec/components/",
+      "https://www.google.com/design/spec/patterns/",
+      "https://www.google.com/design/spec/usability/"
+    ]
+  },
+  "design/landing/pureandroid": {
+    "title": "",
+    "resources": [
+      "design/get-started/creative-vision.html",
+      "design/material/index.html",
+      "training/material/index.html",
+      "design/patterns/pure-android.html",
+      "design/patterns/new.html",
+      "design/devices.html"
+    ]
+  },
+  "design/landing/resources": {
+    "title": "",
+    "resources": [
+      "https://www.google.com/design/spec/resources/color-palettes.html",
+      "https://www.google.com/design/spec/resources/layout-templates.html",
+      "https://www.google.com/design/spec/resources/sticker-sheets-icons.html",
+      "https://www.google.com/design/spec/resources/roboto-noto-fonts.html",
+      "https://www.google.com/design/icons/index.html",
+      "design/downloads/index.html#Wear"
+    ]
+  },
+  "develop/landing/mainlinks": {
+    "title": "",
+    "resources": [
+      "tools/studio/index.html",
+      "samples/new/index.html",
+      "tools/projects/templates.html"
+    ]
+  },
+  "develop/landing/latest": {
+    "title": "",
+    "resources": [
+      "http://android-developers.blogspot.com/2015/04/new-android-code-samples.html",
+      "http://android-developers.blogspot.com/2015/04/android-support-library-221.html",
+      "http://android-developers.blogspot.com/2015/03/a-new-reference-app-for-multi-device.html"
+    ]
+  },
+  "develop/landing/performance": {
+    "title": "",
+    "resources": [
+      "http://www.youtube.com/watch?v=fEEulSk1kNY",
+      "http://www.youtube.com/watch?v=-3ry8PxcJJA",
+      "http://www.youtube.com/watch?v=_kKTGK-Cb_4"
+    ]
+  },
+  "develop/landing/buildwithgoogle": {
+    "title": "",
+    "resources": [
+    ]
+  },
+  "develop/landing/ubicomp": {
+    "title": "",
+    "resources": [
+      "https://www.youtube.com/watch?v=AK38PJZmIW8&list=PLWz5rJ2EKKc-kIrPiq098QH9dOle-fLef",
+      "https://www.youtube.com/watch?v=6K_jxccHv5M&index=1&list=PLOU2XLYxmsILFBfx66ens76VMLMEPJAB0",
+      "https://www.youtube.com/watch?v=ctiaVxgclsg&list=PLWz5rJ2EKKc9BdE_PSLNIGjXXr3h_orXM"
+    ]
+  },
+  "develop/landing/tools": {
+    "title": "",
+    "resources": [
+      "https://www.youtube.com/watch?v=K2dodTXARqc&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
+      "https://www.youtube.com/watch?v=3PIc-DuEU2s&list=PLWz5rJ2EKKc9e0d55YHgJFHXNZbGHEXJX",
+      "https://www.youtube.com/watch?v=cD7NPxuuXYY&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
+      "https://www.youtube.com/watch?v=JLLnhwtDoHw&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
+      "https://www.youtube.com/watch?v=2I6fuD20qlY&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
+      "https://www.youtube.com/watch?v=5Be2mJzP-Uw&list=PLWz5rJ2EKKc9e0d55YHgJFHXNZbGHEXJX"
+    ]
+  },
+  "google/landing/services": {
+    "title": "",
+    "resources": [
+      "https://developers.google.com/analytics/devguides/collection/android/",
+      "https://developers.google.com/maps/documentation/android/",
+      "https://developers.google.com/identity/sign-in/android/",
+      "https://developers.google.com/mobile-ads-sdk/download",
+      "https://developers.google.com/gcm/android/",
+      "https://developers.google.com/app-indexing/"
+    ]
+  },
+  "google/landing/videos": {
+    "title": "",
+    "resources": [
+      "https://www.youtube.com/watch?v=FOn64iqlphk&list=PLWz5rJ2EKKc9Qk1_iCZNbBp6adYnJf9Vf",
+      "https://www.youtube.com/watch?v=F0Kh_RnSM0w&list=PLWz5rJ2EKKc9Qk1_iCZNbBp6adYnJf9Vf",
+      "https://www.youtube.com/watch?v=fvtMtfCuEpw&list=PLWz5rJ2EKKc9Qk1_iCZNbBp6adYnJf9Vf"
+    ]
+  },
+  "google/landing/googleplay": {
+    "title": "",
+    "resources": [
+      "google/play/billing/index.html",
+      "google/play/billing/billing_subscriptions.html",
+      "google/play/developer-api.html"
+    ]
+  },
+  "develop/landing/courses": {
+    "title": "",
+    "resources": [
+      "https://www.udacity.com/course/ux-design-for-mobile-developers--ud849",
+      "https://www.udacity.com/course/developing-android-apps--ud853",
+      "https://www.udacity.com/course/android-performance--ud825",
+      "https://www.udacity.com/android-nanodegree",
+      "https://www.udacity.com/course/advanced-android-app-development--ud855",
+      "https://www.udacity.com/course/android-ubiquitous-computing--ud875",
+      "https://www.udacity.com/course/google-play-services--ud876",
+      "https://www.udacity.com/course/android-design-for-developers--ud862",
+      "https://www.udacity.com/course/android-development-for-beginners--ud837",
+      "https://www.udacity.com/course/gradle-for-android-and-java--ud867"
+    ]
+  },
+  "preview/landing/herolinks": {
+    "title": "",
+    "resources": [
+      "https://www.udacity.com/course/ux-design-for-mobile-developers--ud849",
+      "https://www.udacity.com/course/developing-android-apps--ud853",
+      "https://www.udacity.com/course/android-performance--ud825"
+    ]
+  },
+  "distribute/landing/carousel": {
+    "title": "",
+    "resources": [
+      "http://www.youtube.com/watch?v=Pd49vTkvu0U",
+      "http://www.youtube.com/watch?v=ekxABqJeRBc",
+      "http://www.youtube.com/watch?v=MPnH7h12h0U",
+      "http://www.youtube.com/watch?v=700gYRkhkLM"
+    ]
+  },
+  "distribute/landing/googleplay": {
+    "title": "",
+    "resources": [
+      "distribute/googleplay/about.html",
+      "distribute/googleplay/developer-console.html",
+      "distribute/googleplay/index.html#opportunities"
+    ]
+  },
+  "distribute/landing/more": {
+    "title": "",
+    "resources": [
+    "distribute/users/promote-with-ads.html",
+    "distribute/monetize/ads.html",
+    "distribute/analyze/index.html",
+    "distribute/engage/deep-linking.html",
+    "distribute/engage/easy-signin.html",
+    "https://cloud.google.com/docs/"
+    ]
+  },
   "distribute/edu/videos/stories": {
     "title": "",
     "resources": [
@@ -37,26 +218,25 @@
       "http://youtu.be/vzvpcEffvaE"
     ]
   },
-  "launch/static": {
+/*  "launch/static": {
     "title": "",
     "resources": [
-      "distribute/googleplay/about.html",
-      "distribute/googleplay/guide.html",
-      "about/versions/lollipop.html",
-      "distribute/googleplay/wear.html",
-      "distribute/googleplay/tv.html",
-      "distribute/googleplay/edu/about.html",
-      "distribute/googleplay/families/about.html",
-      "distribute/monetize/subscriptions.html",
+      "http://www.youtube.com/watch?v=1RIz-cmTQB4",
+      "http://www.youtube.com/watch?v=MVBMWDzyHAI",
+      "http://android-developers.blogspot.com/2013/11/app-translation-service-now-available.html",
+      "http://android-developers.blogspot.com/2013/10/more-visibility-for-tablet-apps-in.html",
+      "http://android-developers.blogspot.com/2013/11/bring-your-apps-into-classroom-with.html",
+      "distribute/essentials/quality/tablets.html",
+      "distribute/users/build-buzz.html",
+      "distribute/monetize/premium.html",
       "distribute/monetize/freemium.html",
       "distribute/monetize/ads.html",
-      "distribute/users/promote-with-ads.html",
-      "distribute/engage/deep-linking.html",
-      "distribute/engage/game-services.html",
-      "distribute/essentials/optimizing-your-app.html",
-      "distribute/engage/easy-signin.html",
+      "distribute/essentials/best-practices/apps.html",
+      "distribute/essentials/best-practices/games.html",
+      "distribute/users/know-your-user.html",
+      "distribute/googleplay/developer-console.html"
     ]
-  },
+  }, */
   "launch/static/ja": {
     "title": "",
     "resources": [
@@ -107,8 +287,18 @@
       "distribute/googleplay/auto.html",
       "distribute/googleplay/tv.html",
       "distribute/googleplay/wear.html",
+      "distribute/googleplay/cardboard.html",
+      "distribute/googleplay/cast.html",
       "distribute/googleplay/edu/about.html",
-      "distribute/googleplay/families/about.html"
+      "distribute/googleplay/families/about.html",
+      "distribute/googleplay/work/about.html"
+    ]
+  },
+  "distribute/googleplay/gpfw": {
+    "resources": [
+      "http://www.android.com/work/",
+      "https://www.youtube.com/watch?v=jQWB_-o1kz4&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
+      "training/enterprise/index.html"
     ]
   },
   "distribute/essentials": {
@@ -136,10 +326,14 @@
     "resources": [
       "distribute/users/know-your-user.html",
       "distribute/users/your-listing.html",
-      "distribute/users/build-buzz.html",
-      "distribute/users/build-community.html",
       "distribute/users/expand-to-new-markets.html",
-      "distribute/users/promote-with-ads.html"
+      "distribute/users/promote-with-ads.html",
+      "distribute/users/appindexing.html",
+      "distribute/users/ota-installs.html",
+      "distribute/users/house-ads.html",
+      "distribute/users/youtube.html",
+      "distribute/users/build-buzz.html",
+      "distribute/users/build-community.html"
     ]
   },
   "distribute/engagelanding": {
@@ -149,8 +343,11 @@
       "distribute/engage/gcm.html",
       "distribute/engage/easy-signin.html",
       "distribute/engage/deep-linking.html",
-      "distribute/engage/game-services.html",
+      "distribute/engage/ads.html",
+      "distribute/engage/intents.html",
+      "distribute/engage/appindexing.html",
       "distribute/engage/analytics.html",
+      "distribute/engage/game-services.html",
       "distribute/engage/app-updates.html",
       "distribute/engage/community.html",
       "distribute/engage/video.html"
@@ -324,6 +521,22 @@
       "https://support.google.com/googleplay/android-developer/answer/138294"
     ]
   },
+  "distribute/googleplay/cast": {
+    "title": "Google Cast",
+    "resources": [
+      "https://developers.google.com/cast/docs/ux_guidelines",
+      "https://developers.google.com/cast/docs/android_sender",
+      "http://www.github.com/googlecast"
+    ]
+  },
+  "distribute/googleplay/cardboard": {
+    "title": "Google Cast",
+    "resources": [
+      "https://www.google.com/get/cardboard/get-cardboard/",
+      "https://developers.google.com/cardboard/android/download",
+      "http://www.google.com/design/spec-vr"
+    ]
+  },
   "distribute/googleplay/gpfe/highlight": {
     "title": "About Google Play for Education",
     "resources": [
@@ -406,8 +619,10 @@
   "distribute/users/promotewithads": {
     "title": "",
     "resources": [
-      "http://www.google.com/ads/admob/#subid=us-en-et-dac",
-      "distribute/essentials/optimizing-your-app.html"
+      "https://support.google.com/adwords/answer/6032059",
+      "https://support.google.com/adwords/answer/6032073",
+      "https://support.google.com/adwords/answer/6167164",
+      "https://support.google.com/adwords/answer/6167162"
     ]
   },
   "distribute/users/buildbuzz": {
@@ -439,6 +654,40 @@
       "http://www.youtube.com/yt/dev/"
     ]
   },
+  "distribute/users/appindexing": {
+    "title": "",
+    "resources": [
+      "https://developers.google.com/app-indexing/",
+      "https://developers.google.com/app-indexing/webmasters/details",
+      "distribute/engage/appindexing.html"
+    ]
+  },
+  "distribute/users/otas": {
+    "title": "",
+    "resources": [
+      "https://developers.google.com/identity/sign-in/android/",
+      "https://developers.google.com/+/features/play-installs",
+      "https://developers.google.com/+/features/analytics"
+    ]
+  },
+  "distribute/users/houseads": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/admob/topic/2784623",
+      "https://developers.google.com/mobile-ads-sdk/download",
+      "http://support.google.com/googleplay/android-developer/topic/2985714",
+      "http://analyticsacademy.withgoogle.com/mobile-app",
+      "https://support.google.com/analytics/answer/2611404",
+      "https://support.google.com/admob/answer/3111064"
+    ]
+  },
+  "distribute/users/youtube": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/youtube/answer/6140493",
+      "https://support.google.com/youtube/answer/2797387"
+    ]
+  },
   "distribute/toolsreference/bestpractices/apps": {
     "title": "",
     "resources": [
@@ -662,6 +911,31 @@
       "guide/topics/appwidgets/index.html"
     ]
   },
+  "distribute/engage/reengage": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/adwords/answer/6032073",
+      "distribute/engage/deep-linking.html",
+      "https://support.google.com/adwords/answer/6167162",
+      "distribute/users/promote-with-ads.html"
+    ]
+  },
+  "distribute/engage/appindexing": {
+    "title": "",
+    "resources": [
+      "distribute/engage/intents.html",
+      "distribute/engage/appindexing.html",
+      "distribute/users/appindexing.html"
+    ]
+  },
+  "distribute/engage/intents": {
+    "title": "",
+    "resources": [
+      "guide/components/intents-filters.html",
+      "distribute/engage/appindexing.html",
+      "distribute/engage/ads.html"
+    ]
+  },
   "distribute/getusers/expandnewmarkets": {
     "title": "",
     "resources": [
@@ -691,10 +965,9 @@
   "distribute/engage/gplus": {
     "title": "",
     "resources": [
-      "google/play-services/plus.html",
-      "google/play-services/games.html",
-      "https://developers.google.com/+/mobile/android/share/interactive-post",
-      "https://developers.google.com/+/mobile/android/share/deep-link"
+      "distribute/users/ota-installs.html",
+      "https://developers.google.com/identity/sign-in/android/people",
+      "https://developers.google.com/+/mobile/android/"
     ]
   },
   "distribute/engage/community": {
@@ -1088,6 +1361,17 @@
       "training/monetization/ads-and-ux.html"
     ]
   },
+  "distribute/monetize/admob": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/admob/topic/2784623",
+      "https://developers.google.com/mobile-ads-sdk/download",
+      "http://analyticsacademy.withgoogle.com/mobile-app",
+      "http://support.google.com/googleplay/android-developer/topic/2985714",
+      "https://support.google.com/admob/answer/2753860",
+      "https://support.google.com/admob/"
+    ]
+  },
   "distribute/monetize/paymentmethods": {
     "title": "",
     "resources": [
@@ -1095,6 +1379,17 @@
       "https://support.google.com/googleplay/answer/2651410"
     ]
   },
+  "preview/landing/resources": {
+    "title": "",
+    "resources": [
+      "preview/overview.html",
+      "preview/api-overview.html",
+      "preview/setup-sdk.html",
+      "preview/samples.html",
+      "preview/reference.html",
+      "preview/support.html"
+    ]
+  },
   "autolanding": {
     "title": "",
     "resources": [
@@ -1282,4 +1577,4 @@
       "samples/BasicManagedProfile/index.html"
     ]
   }
-}
+}
\ No newline at end of file
diff --git a/docs/html/jd_extras.js b/docs/html/jd_extras.js
index f91550f..6f6d31d 100644
--- a/docs/html/jd_extras.js
+++ b/docs/html/jd_extras.js
@@ -14,6 +14,8 @@
    ALL_RESOURCES_BY_URL.  */
 
 DISTRIBUTE_RESOURCES = DISTRIBUTE_RESOURCES.concat([
+ /* TODO Remove standard resources from here, such as below
+ */
   {
     "title":"Quizlet Developer Story",
     "titleFriendly":"",
@@ -29,7 +31,7 @@
     "type":"video"
   },
   {
-    "title":"Whats New in Google Play",
+    "title":"What's New in GPFE",
     "titleFriendly":"",
     "summary":"Learn about the vision and philosophy behind Google Play for Education",
     "url":"https://www.youtube.com/watch?v=IKhU180eJMo",
@@ -43,6 +45,105 @@
     "type":"video"
   },
   {
+    "title":"Get started with Google Cast",
+    "titleFriendly":"",
+    "summary":"Build multi-screen experiences, let the user send video and audio content to TVs and speakers.",
+    "url":"https://developers.google.com/cast/docs/ux_guidelines",
+    "group":"",
+    "keywords": ["cast", "chromecast", "video", "audio"],
+    "tags": [],
+    "image":"images/cards/card-cast_2x.jpg",
+    "type":"Guide"
+  },
+  {
+    "title":"Android Sender Applications",
+    "titleFriendly":"",
+    "summary":"Get an overview of how your Android app can act as a Google Cast sender app.",
+    "url":"https://developers.google.com/cast/docs/android_sender",
+    "group":"",
+    "keywords": ["cast", "sender"],
+    "tags": [],
+    "image":"images/cards/card-cast_2x.jpg",
+    "type":"Guide"
+  },
+  {
+    "title":"Cast sample apps",
+    "titleFriendly":"",
+    "summary":"Get example Google Cast applications for both senders and receivers.",
+    "url":"http://www.github.com/googlecast",
+    "group":"",
+    "keywords": ["cast", "samples"],
+    "tags": [],
+    "image":"images/cards/card-cast_2x.jpg",
+    "type":"Samples"
+  },
+  {
+    "title":"Get Cardboard",
+    "titleFriendly":"",
+    "summary":"Get your own Cardboard, today. Buy one from a manufacturer or build your own, and start developing.",
+    "url":"https://www.google.com/get/cardboard/get-cardboard/",
+    "group":"",
+    "keywords": ["carboard","vr"],
+    "tags": [],
+    "image":"images/cards/card-cardboard_2x.png",
+    "type":"Guide"
+  },
+    {
+    "title":"Download the Cardboard SDK",
+    "titleFriendly":"",
+    "summary":"Grab the Cardboard libraries from GitHub and start creating VR apps in your favorite development environment.",
+    "url":"https://developers.google.com/cardboard/android/download",
+    "group":"",
+    "keywords": ["carboard","vr"],
+    "tags": [],
+    "image":"images/cards/card-cardboard_2x.png",
+    "type":"Guide"
+  },
+  {
+    "title":"Cardboard design guidelines",
+    "titleFriendly":"",
+    "summary":"Focus on overall usability and avoiding common VR pitfalls while creating an immersive experience of your own.",
+    "url":"http://www.google.com/design/spec-vr",
+    "group":"",
+    "keywords": ["carboard","vr"],
+    "tags": [],
+    "image":"images/cards/card-cardboard_2x.png",
+    "type":"Design"
+  },
+  {
+    "title":"Maps",
+    "titleFriendly":"",
+    "summary":"Give users the map that more than a billion people use every month.",
+    "url":"https://developers.google.com/maps/documentation/android/",
+    "group":"",
+    "keywords": ["maps"],
+    "tags": [],
+    "image":"images/google/gps-maps.png",
+    "type":"Guide"
+  },
+    {
+    "title":"Places API",
+    "titleFriendly":"",
+    "summary":"give your users contextual information about where they are, when they’re there.",
+    "url":"https://developers.google.com/places/android/",
+    "group":"",
+    "keywords": ["places","location", "context"],
+    "tags": [],
+    "image":"images/cards/card-places_2x.png",
+    "type":"Guide"
+  },
+    {
+    "title":"Google Cloud Messaging",
+    "titleFriendly":"",
+    "summary":"Send push notifications and pubsub from your server to your users’ devices around the world.",
+    "url":"https://developers.google.com/gcm/android/",
+    "group":"",
+    "keywords": ["push","gcm"],
+    "tags": [],
+    "image":"images/gcm/gcm-logo.png",
+    "type":"Guide"
+  },
+  {
     "title":"ClassDojo Developer Story",
     "titleFriendly":"",
     "summary":"ClassDojo is a classroom tool that helps teachers improve behavior in their classrooms quickly and easily. See how they optimized for the classroom with Android and the power of Google Play for Education.",
@@ -99,6 +200,162 @@
     "type":"video"
   },
   {
+    "title":"DesignBytes: Intro To Material Design",
+    "titleFriendly":"",
+    "summary":"These days, UI designers need to be thinking about phones, tablets, laptops, TVs, smartwatches, and beyond. In this DesignByte we talk about how Google designers have been working on making cross-platform and multi-screen design easier. We wanted to build a design system that felt at home on every screen, from the smallest watch to the largest TV.",
+    "url":"http://www.youtube.com/watch?v=p4gmvHyuZzw",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"http://i1.ytimg.com/vi/p4gmvHyuZzw/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"DesignBytes: Paper and Ink: The Materials that Matter",
+    "titleFriendly":"",
+    "summary":"Join Rich Fulcher to learn about the materials of material design. See how virtual paper and ink form the foundation of your tactile user interface and master the rules that govern their behaviour.",
+    "url":"http://www.youtube.com/watch?v=YaG_ljfzeUw",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"http://i1.ytimg.com/vi/YaG_ljfzeUw/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"DesignBytes: Material Design in the Google I/O App",
+    "titleFriendly":"",
+    "summary":"Roman Nurik shares details on the design process for the Google I/O 2014 app. To check out the app's source code, visit github.com/google/iosched.",
+    "url":"http://www.youtube.com/watch?v=XOcCOBe8PTc",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"http://i1.ytimg.com/vi/XOcCOBe8PTc/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Battery Drain and Networking",
+    "titleFriendly":"",
+    "summary":"Let’s take a moment to make something insanely clear: As far as battery is concerned, NETWORKING is the biggest, baddest, dirtiest offender there is. And optimizing performance here isn’t easy. Since the chip isn’t always awake and draining power, means you can optimize how it wakes up, sends traffic, and saves battery.",
+    "url":"http://www.youtube.com/watch?v=fEEulSk1kNY",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"http://i1.ytimg.com/vi/fEEulSk1kNY/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Batching Background Work Until Later",
+    "titleFriendly":"",
+    "summary":"Yes, your app is special. But when it comes to battery use, sometimes it’s better to be part of the crowd. Why not spread the battery blame around a bit? Ian Ni-Lewis shows you how ridiculously easy it is to go from battery hog to team player in this video.",
+    "url":"http://www.youtube.com/watch?v=-3ry8PxcJJA",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"http://i1.ytimg.com/vi/-3ry8PxcJJA/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"The Performance Lifecycle",
+    "titleFriendly":"",
+    "summary":"Performance problems surface in your application at the least-wanted times (like right before you’re about to ship your first build). But don’t freak out: There’s a simple process that you can follow to help get your performance back under control.",
+    "url":"http://www.youtube.com/watch?v=_kKTGK-Cb_4",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"http://i1.ytimg.com/vi/_kKTGK-Cb_4/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Introduction to Android Studio",
+    "titleFriendly":"",
+    "summary":"Learn why you should migrate your projects to Android Studio now and how it can help you be more productive as a developer. Rich layout editor, handy suggestions and fixes, new Android project view - these are just some of the things you can expect from the IDE, which is built on the successful IntelliJ IDEA.",
+    "url":"https://www.youtube.com/watch?v=K2dodTXARqc&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
+    "group":"",
+    "keywords": ["studio", "tools"],
+    "tags": [
+    ],
+    "image":"http://i1.ytimg.com/vi/K2dodTXARqc/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Google Play Services 7.3",
+    "titleFriendly":"",
+    "summary":"Google Play Services 7.3 brings a ton of great new features to help you BUILD BETTER APPS! This update brings the ability to connect multiple wearables simultaneously to a single phone.",
+    "url":"https://www.youtube.com/watch?v=FOn64iqlphk&list=PLWz5rJ2EKKc9Qk1_iCZNbBp6adYnJf9Vf",
+    "group":"",
+    "keywords": ["google play services"],
+    "tags": [
+    ],
+    "image":"http://i1.ytimg.com/vi/FOn64iqlphk/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Google Play Services 6.5",
+    "titleFriendly":"",
+    "summary":"Google Play services 6.5 includes new features in Google Maps, Google Drive and Google Wallet as well as the recently launched Google Fit API. ",
+    "url":"https://www.youtube.com/watch?v=fvtMtfCuEpw&list=PLWz5rJ2EKKc9Qk1_iCZNbBp6adYnJf9Vf",
+    "group":"",
+    "keywords": ["google play services"],
+    "tags": [
+    ],
+    "image":"http://i1.ytimg.com/vi/fvtMtfCuEpw/maxresdefault.jpg",
+    "type":"video"
+  },
+    {
+    "title":"Google Play Services 7.0",
+    "titleFriendly":"",
+    "summary":"Google Play services 7.0 is here! we've added the Places API, made enhancements to Location and Google Fit, and you can also remote control your Android TV through the new Nearby Connections API.",
+    "url":"https://www.youtube.com/watch?v=F0Kh_RnSM0w&list=PLWz5rJ2EKKc9Qk1_iCZNbBp6adYnJf9Vf",
+    "group":"",
+    "keywords": ["google play services"],
+    "tags": [
+    ],
+    "image":"http://i1.ytimg.com/vi/F0Kh_RnSM0w/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Running a Successful Games Business with Google",
+    "titleFriendly":"",
+    "summary":"Sure, we all want to make the next great gaming masterpiece. But we also want to feed our families and/or dogs. Join Bob Meese from the Google Play team as he gives you some key pointers on how to make sure you're best taking advantage of Google Play and running a successful games business.",
+    "url":"http://www.youtube.com/watch?v=tDmnGNkTtlE",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"http://i1.ytimg.com/vi/tDmnGNkTtlE/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Introduction to Android TV",
+    "titleFriendly":"",
+    "summary":"Android TV brings the Android platform to the living room with rich content and entertaining app experiences. In this video, Timothy introduces the design philosophy and developer components that make building TV experiences easier than ever before.",
+    "url":"https://www.youtube.com/watch?v=6K_jxccHv5M&index=1&list=PLOU2XLYxmsILFBfx66ens76VMLMEPJAB0",
+    "group":"",
+    "keywords": ["tv"],
+    "tags": [
+    ],
+    "image":"http://i1.ytimg.com/vi/6K_jxccHv5M/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Introduction to Android Auto",
+    "titleFriendly":"",
+    "summary":"Android Auto brings the Android platform to the car in a way that's optimized for the driving experience. It's the same platform you already use for phones, tablets, televisions, wearables, and more. ",
+    "url":"https://www.youtube.com/watch?v=ctiaVxgclsg&list=PLWz5rJ2EKKc9BdE_PSLNIGjXXr3h_orXM",
+    "group":"",
+    "keywords": ["auto"],
+    "tags": [
+    ],
+    "image":"http://i1.ytimg.com/vi/ctiaVxgclsg/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
     "title":"Developer Registration",
     "titleFriendly":"",
     "summary":"Additional information about the registration process.",
@@ -990,28 +1247,14 @@
     ],
     "url": "http://www.google.com/analytics/mobile/",
     "timestamp": 1383243492000,
-    "image": "http://www.google.com//analytics/images/heros/mobile-index.jpg",
-    "title": "Google Mobile App Analytics",
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Mobile App Analytics",
     "summary": "Mobile App Analytics measures what matters most at all key stages: from first discovery and download to in-app purchases. ",
     "keywords": ["analytics,user behavior"],
-    "type": "guide",
+    "type": "Guide",
     "titleFriendly": ""
   },
-  {
-    "lang": "en",
-    "group": "",
-    "tags": [
-      "#engagement",
-    ],
-    "url": "https://developers.google.com/app-indexing/",
-    "timestamp": 1383243492000,
-    "image": "https://developers.google.com/app-indexing/images/allthecooks_srp.png",
-    "title": "Sign Up for App Indexing",
-    "summary": "Google is working with app developers and webmasters to index the content of apps and relate them to websites. When relevant, Google Search results on Android will include deep links to apps.",
-    "keywords": [],
-    "type": "guide",
-    "titleFriendly": ""
-  },
+
 
   {
     "lang": "en",
@@ -1032,21 +1275,6 @@
     "lang": "en",
     "group": "",
     "tags": [
-      "#googleplus",
-    ],
-    "url": "https://developers.google.com/+/mobile/android/people",
-    "timestamp": 1383243492000,
-    "image": "images/google/gps-googleplus.png",
-    "title": "Sign Up for App Indexing",
-    "summary": "After you let users sign in with Google, you can access their age range, language, public profile information, and people that they have circled.",
-    "keywords": ["googleplus"],
-    "type": "guide",
-    "titleFriendly": ""
-  },
-  {
-    "lang": "en",
-    "group": "",
-    "tags": [
       "#gcm",
     ],
     "url": "http://developer.chrome.com/apps/cloudMessagingV2",
@@ -1121,6 +1349,19 @@
     "lang": "en",
     "group": "",
     "tags": [],
+    "url": "https://developers.google.com/+/mobile/android/",
+    "timestamp": 1194884220000,
+    "image": 'images/google/gps-googleplus.png',
+    "title": "Google+ Platform",
+    "summary": "Find out about features such as interactive posts, Hangouts, accessing basic user details and their social graphs to make your app more personal.",
+    "keywords": ["Google+"],
+    "type": "guide",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
     "url": "https://support.google.com/googleplay/android-developer/answer/2528691",
     "timestamp": 1194884220000,
     "image": "images/play_dev.jpg",
@@ -1316,20 +1557,6 @@
     "lang": "en",
     "group": "",
     "tags": ["monetize", "ads"],
-    "url": "http://www.google.com/ads/admob/#subid=us-en-et-dac",
-    "timestamp": null,
-    "image": "distribute/images/advertising.png",
-    "title": "AdMob",
-    "summary": "Make money by connecting with over a million Google advertisers all over the world, so your revenue scales with your app.",
-    "keywords": ["ads"],
-    "type": "distribute",
-    "titleFriendly": ""
-  },
-
-  {
-    "lang": "en",
-    "group": "",
-    "tags": ["monetize", "ads"],
     "url": "http://www.google.com/doubleclick/publishers/small-business/index.html",
     "timestamp": null,
     "image": "http://www.google.com/doubleclick/publishers/small-business/images/define_ad.png",
@@ -1345,9 +1572,9 @@
     "tags": ["monetize", "ads"],
     "url": "http://support.google.com/googleplay/android-developer/topic/2985714",
     "timestamp": null,
-    "image": "http://storage.googleapis.com/support-kms-prod/SNP_712EA2784949DDF085C46E3BE7B1DC618A09_4389397_en_v0",
+    "image":"images/play_dev.jpg",
     "title": "Policy Center: Ads",
-    "summary": "Introduction to ads and system interference policies in Google Play",
+    "summary": "Introduction to ads and system interference policies in Google Play.",
     "keywords": ["ads"],
     "type": "distribute",
     "titleFriendly": ""
@@ -1355,6 +1582,32 @@
   {
     "lang": "en",
     "group": "",
+    "tags": [],
+    "url": "https://support.google.com/analytics/answer/2611404",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Create Audience lists in Google Analytics",
+    "summary": "Find out how to use your analytics data to discover high value users and create remarketing audiences to use in AdMob.",
+    "keywords": ["ads, analytics, monetize"],
+    "type": "distribute",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/admob/answer/3111064",
+    "timestamp": null,
+    "image": "distribute/images/advertising.jpg",
+    "title": "AdMob in-app conversion tracking",
+    "summary": "Use in-app conversion tracking to attribute revenue back to your IAP promotion campaigns and determine which ones earn you the most.",
+    "keywords": ["ads, analytics, conversions"],
+    "type": "distribute",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
     "tags": ["monetize", "giftcards"],
     "url": "https://play.google.com/about/giftcards/",
     "timestamp": null,
@@ -1420,12 +1673,12 @@
   {
     "lang": "en",
     "group": "",
-    "tags": ["analytics"],
+    "tags": [],
     "url": "https://developers.google.com/analytics/devguides/collection/android/",
     "timestamp": null,
-    "image": "https://developers.google.com/analytics/images/home/gear-logo.png",
-    "title": "Google Mobile App Analytics SDK",
-    "summary": "Get started with the Google Analytics SDK for Android.",
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Mobile App Analytics SDK",
+    "summary": "Measure everything about your app. Get started with the Google Analytics SDK for Android.",
     "keywords": ["analytics, user behavior"],
     "type": "sdk",
     "titleFriendly": ""
@@ -1683,7 +1936,7 @@
     "tags": [],
     "url": "https://developers.google.com/analytics/solutions/mobile-implementation-guide",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "Mobile Analytics Implementation Guide",
     "summary": "Learn how you can implement additional Google Analytics features to better understand your users and their behavior.",
     "keywords": ["analytics", "Play", "users"],
@@ -1709,7 +1962,7 @@
     "tags": [],
     "url": "https://analyticsacademy.withgoogle.com/course04",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "Mobile App Analytics Fundamentals",
     "summary": "This self-paced online course on mobile app measurement shows you how Google Analytics data can help you make your app more discoverable and profitable.",
     "keywords": ["analytics"],
@@ -1722,7 +1975,7 @@
     "tags": [],
     "url": "https://github.com/googleanalytics/google-analytics-plugin-for-unity",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "Analytics Plugin for Unity",
     "summary": "If you're building games with Unity, you can now implement Analytics once and ship it on multiple platforms automatically.",
     "keywords": ["analytics", "unity"],
@@ -1735,7 +1988,7 @@
     "tags": [],
     "url": "https://developers.google.com/analytics/devguides/collection/android/v4/enhanced-ecommerce",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "In-App Purchases & Ecommerce",
     "summary": "If your app sells virtual or real goods, ecommerce tracking can help you understand what behaviors lead to purchases.",
     "keywords": ["analytics, ecommerce"],
@@ -1748,7 +2001,7 @@
     "tags": [],
     "url": "https://support.google.com/analytics/answer/1032415",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "Goals",
     "summary": "Track important actions in your app as goals and measure performance against your objectives.",
     "keywords": ["analytics"],
@@ -1761,7 +2014,7 @@
     "tags": [],
     "url": "https://support.google.com/analytics/answer/2568874?ref_topic=6012392",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "Active Users",
     "summary": "The active user report displays your 1-day, 7-day, 14-day and 30-day trailing active users next to each other, to help you analyze performance over time.",
     "keywords": ["analytics"],
@@ -1774,7 +2027,7 @@
     "tags": [],
     "url": "https://developers.google.com/analytics/devguides/collection/android/v4/events",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "Events",
     "summary": "Events let you measure granular in-app activities and understand user journeys.",
     "keywords": ["analytics"],
@@ -1787,7 +2040,7 @@
     "tags": [],
     "url": "https://developers.google.com/analytics/devguides/collection/android/v4/customdimsmets",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "Custom Dimensions",
     "summary": "Custom dimensions enable the association of metadata with hits, users, and sessions in Google Analytics.",
     "keywords": ["analytics"],
@@ -1800,7 +2053,7 @@
     "tags": [],
     "url": "https://developers.google.com/analytics/devguides/collection/android/v4/user-id",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "User ID",
     "summary": "The User ID feature enables Google Analytics to measure user activities that span across devices.",
     "keywords": ["analytics"],
@@ -1813,7 +2066,7 @@
     "tags": [],
     "url": "https://developers.google.com/analytics/devguides/collection/android/v4/display-features",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "Demographic Reporting",
     "summary": "By enabling display features, you can see just how different user segments engage and monetize.",
     "keywords": ["analytics"],
@@ -1826,7 +2079,7 @@
     "tags": [],
     "url": "https://support.google.com/analytics/answer/3123906",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "User Segmentation",
     "summary": "Segments let you compare metrics for different subsets of users to identify trends and opportunities for your apps.",
     "keywords": ["analytics"],
@@ -1839,7 +2092,7 @@
     "tags": [],
     "url": "https://developers.google.com/analytics/devguides/collection/android/v4/campaigns",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "Campaign Tracking",
     "summary": "Measuring campaigns in Google Analytics enables the attribution of campaigns and traffic sources to user activity within your app.",
     "keywords": ["analytics"],
@@ -1865,7 +2118,7 @@
     "tags": [],
     "url": "https://support.google.com/analytics/answer/1033961",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "AdWords Integration",
     "summary": "Link Analytics and AdWords to see the entire picture of customer behavior, from ad click or impression through your site to conversion. ",
     "keywords": ["adwords, analytics"],
@@ -1878,7 +2131,7 @@
     "tags": [],
     "url": "https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#google-play-url-builder",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "Campaign URL builder for Google Play",
     "summary": "Easily create your URLs to track install campaigns.",
     "keywords": ["play, analytics"],
@@ -1904,7 +2157,7 @@
     "tags": [],
     "url": "https://support.google.com/analytics/answer/2785577",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "Behavior Flow",
     "summary": "The Behavior Flow report visualizes the path users traveled from one Screen or Event to the next. This report can help you discover what content keeps users engaged with your app.",
     "keywords": ["analytics"],
@@ -1917,7 +2170,7 @@
     "tags": [],
     "url": "https://support.google.com/analytics/answer/1151300",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "Custom Reports",
     "summary": "Custom Reports let you create your own reports in your Google Analytics account.",
     "keywords": ["analytics"],
@@ -1930,7 +2183,7 @@
     "tags": [],
     "url": "https://support.google.com/analytics/answer/2611268",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "Audience Lists &amp; Remarketing",
     "summary": "Remarketing with Google Analytics lets you deliver targeted ads to users who've already been to your site or app. You can even base those ads on the behavior those users displayed during their sessions.",
     "keywords": ["analytics"],
@@ -1943,7 +2196,7 @@
     "tags": [],
     "url": "https://support.google.com/admob/answer/3508177",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "AdMob Integration",
     "summary": "With Google Analytics in AdMob, you can view Google Analytics data for your linked apps from within your AdMob account.",
     "keywords": ["analytics"],
@@ -1956,7 +2209,7 @@
     "tags": [],
     "url": "https://developers.google.com/analytics/solutions/mobile-campaign-deep-link",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "Deep-Linking",
     "summary": "Google Analytics gives you a full view of how returning users are interacting with your app, for a holistic view beyond the install.",
     "keywords": ["analytics"],
@@ -1969,7 +2222,7 @@
     "tags": [],
     "url": "https://support.google.com/admob/answer/3508177",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "AdMob Integration",
     "summary": "With Google Analytics in AdMob, you can view Google Analytics data for your linked apps from within your AdMob account.",
     "keywords": ["analytics"],
@@ -1982,7 +2235,7 @@
     "tags": [],
     "url": "https://support.google.com/analytics/answer/2568874",
     "timestamp": null,
-    "image": "distribute/images/gp-analytics-logo.jpg",
+    "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "Active User Report",
     "summary": "Active user report displays your 1-day, 7-day, 14-day and 30-day trailing active users next to each other, to help you run benchmark analyses of their performance over time.",
     "keywords": ["analytics"],
@@ -1990,6 +2243,656 @@
     "titleFriendly": ""
   },
   {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/animation/",
+    "timestamp": null,
+    "image": "images/cards/material-animation_2x.png",
+    "title": "Animation",
+    "summary": "",
+    "keywords": [],
+    "type": "material design",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/style/",
+    "timestamp": null,
+    "image": "images/cards/material-style_2x.jpg",
+    "title": "Style",
+    "summary": "",
+    "keywords": [],
+    "type": "material design",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/layout/",
+    "timestamp": null,
+    "image": "images/cards/material-layout_2x.png",
+    "title": "Layout",
+    "summary": "",
+    "keywords": [],
+    "type": "material design",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/components/",
+    "timestamp": null,
+    "image": "images/cards/material-components_2x.jpg",
+    "title": "Components",
+    "summary": "",
+    "keywords": [],
+    "type": "material design",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/patterns/",
+    "timestamp": null,
+    "image": "images/cards/material-patterns_2x.png",
+    "title": "Patterns",
+    "summary": "",
+    "keywords": [],
+    "type": "material design",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/usability/",
+    "timestamp": null,
+    "image": "images/cards/material-usability_2x.png",
+    "title": "Usability",
+    "summary": "",
+    "keywords": [],
+    "type": "material design",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/resources/color-palettes.html",
+    "timestamp": null,
+    "image": "images/cards/material-color-palette_2x.jpg",
+    "title": "Color Palettes",
+    "summary": "",
+    "keywords": [],
+    "type": "material design",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/resources/layout-templates.html",
+    "timestamp": null,
+    "image": "images/cards/material-layout-template_2x.jpg",
+    "title": "Layout Templates",
+    "summary": "",
+    "keywords": [],
+    "type": "material design",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/resources/sticker-sheets-icons.html",
+    "timestamp": null,
+    "image": "images/cards/material-sticker-sheet_2x.jpg",
+    "title": "Sticker Sheets & Icons",
+    "summary": "",
+    "keywords": [],
+    "type": "material design",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/resources/roboto-noto-fonts.html",
+    "timestamp": null,
+    "image": "images/cards/material-typography_2x.jpg",
+    "title": "Typography: Roboto and Noto Sans fonts",
+    "summary": "",
+    "keywords": [],
+    "type": "materialdesign",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [
+      "icons",
+      "material",
+      "iconography"
+    ],
+    "url": "https://www.google.com/design/icons/index.html",
+    "timestamp": null,
+    "image": "images/cards/card-material-icons-16x9_2x.jpg",
+    "title": "Material icon collection",
+    "summary": "",
+    "keywords": ["icons"],
+    "type": "material design",
+    "titleFriendly": ""
+  },
+
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/adwords/answer/6032059",
+    "timestamp": null,
+    "image": "distribute/images/advertising.jpg",
+    "title": "Setting up Mobile App Install Ads",
+    "summary": "With Mobile app installs campaigns on the Search and Display Networks, and TrueView for mobile app promotion on YouTube, you can create custom app install ads that run exclusively on phones and tablets.",
+    "keywords": ["marketing", "admob"],
+    "type": "distribute",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/adwords/answer/6167164",
+    "timestamp": null,
+    "image": "distribute/images/advertising.jpg",
+    "title": "Best practices for Mobile App Engagement",
+    "summary": "Learn how to market to your user base to drive re-engagement with your app. ",
+    "keywords": ["marketing", "admob"],
+    "type": "distribute",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [
+      "marketing",
+      "engagement",
+      "adwords1"
+    ],
+    "url": "https://support.google.com/adwords/answer/6032073",
+    "timestamp": null,
+    "image": "https://www.gstatic.com/images/icons/material/product/2x/adwords_64dp.png",
+    "title": "Setting up Mobile App Engagement Ads",
+    "summary": "Mobile app engagement campaigns are a great choice for advertisers focused on connecting with people who already have their app.",
+    "keywords": [
+      "marketing",
+      "engagement",
+      "adwords"
+    ],
+    "type": "distribute",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [
+      "marketing",
+      "engagement"
+    ],
+    "url": "https://support.google.com/adwords/answer/6167162",
+    "timestamp": null,
+    "image": "https://www.gstatic.com/images/icons/material/product/2x/adwords_64dp.png",
+    "title": "Best Practices for Mobile App Installs",
+    "summary": "Getting your mobile app discovered can be challenging. Learn how to drive downloads of your app and grow a valuable user base.",
+    "keywords": ["marketing", "adwords"],
+    "type": "distribute",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/admob/topic/2784623",
+    "timestamp": null,
+    "image": "distribute/images/advertising.jpg",
+    "title": "Set up your AdMob account",
+    "summary": "Setting up your AdMob account in the right way will help you get the most value, check out the Setup and Basics guide.",
+    "keywords": ["marketing", "admob"],
+    "type": "distribute",
+    "titleFriendly": ""
+    },
+    {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "http://analyticsacademy.withgoogle.com/mobile-app",
+    "timestamp": null,
+    "image": "distribute/images/advertising.jpg",
+    "title": "Analytics Academy for Mobile Apps",
+    "summary": "Learn how to use Google Analytics to make your app more discoverable and profitable.",
+    "keywords": ["marketing", "analytics"],
+    "type": "distribute",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/mobile-ads-sdk/download",
+    "timestamp": null,
+    "image": "distribute/images/advertising.jpg",
+    "title": "Admob Ads",
+    "summary": "Use the Mobile Ads SDK to start showing AdMob ads in your apps.",
+    "keywords": ["marketing", "adwords"],
+    "type": "Guide",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/admob/",
+    "timestamp": null,
+    "image": "distribute/images/advertising.jpg",
+    "title": "AdMob Help Center",
+    "summary": "For setup assistance, general info, and fixes for specific problems check out the AdMob Help Center.",
+    "keywords": ["admob"],
+    "type": "distribute",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/admob/answer/2753860",
+    "timestamp": null,
+    "image": "distribute/images/advertising.jpg",
+    "title": "AdMob Policy Guidelines",
+    "summary": "Learn about best practices for displaying AdMob ads in your apps to maximize revenue.",
+    "keywords": ["admob"],
+    "type": "distribute",
+    "titleFriendly": ""
+  },
+
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/app-indexing/",
+    "timestamp": 1383243492000,
+    "image": "images/cards/google-search_2x.png",
+    "title": "Set Up App Indexing",
+    "summary": "Surface your app content in Google seaerch. Deep link direct to your apps.",
+    "keywords": ["search", "appindexing", "engagement", "getusers"],
+    "type": "guide",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/app-indexing/webmasters/details",
+    "timestamp": null,
+    "image": "images/cards/google-search_2x.png",
+    "title": "Index your app",
+    "summary": "Index your app today by adding deep links and verifying its official web site to ensure it starts appearing in Google Search results. ",
+    "keywords": ["appindexing","search","getusers"],
+    "type": "distribute",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/identity/sign-in/android/people",
+    "timestamp": 1383243492000,
+    "image": "images/cards/google-sign-in_2x.png",
+    "title": "Get user profile details",
+    "summary": "After users sign-in with Google, you can access their age range, language, and public profile information.",
+    "keywords": ["signin", "identity", "google"],
+    "type": "guide",
+    "titleFriendly": ""
+  },
+
+
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/identity/sign-in/android/",
+    "timestamp": "",
+    "image": "images/cards/google-sign-in_2x.png",
+    "title": "Google Sign-In",
+    "summary": "Discover how you can enhance user experiences on your website or in your app using information provided by their Google identity.",
+    "keywords": ["signin", "identity", "google"],
+    "type": "guide",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/+/features/play-installs",
+    "timestamp": 1383243492000,
+    "image": "images/cards/google-sign-in_2x.png",
+    "title": "Over-the-air installs",
+    "summary": "Follow this step-by-step guide to quickly add Google Sign-in and over-the-air app installs to your website.",
+    "keywords": ["signin", "google", "installs"],
+    "type": "guide",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/+/features/analytics",
+    "timestamp": 1383243492000,
+    "image": 'images/google/gps-googleplus.png',
+    "title": "Google+ Insights",
+    "summary": "Measure impressions of the over-the-air install prompt, resulting installs, and success rate by day, week, and month.",
+    "keywords": ["signin", "identity"],
+    "type": "guide",
+    "titleFriendly": ""
+  },
+
+
+
+ // TODO remove this?
+  {
+    "title":"Android Wear Materials",
+    "titleFriendly":"",
+    "summary":"Drag and drop your way to beautifully designed Android Wear apps.",
+    "url":"design/downloads/index.html#Wear",
+    "group":"",
+    "keywords": ["icons","stencils","color swatches"],
+    "tags": ["icons","stencils","colorswatches"],
+    "image":"images/cards/android-wear-materials_2x.jpg",
+    "lang":"en",
+    "type":"design"
+  },
+  {
+    "title":"UX Design for Mobile Developers",
+    "titleFriendly":"",
+    "summary":"Learn how to design a 5-star app.",
+    "url":"https://www.udacity.com/course/ux-design-for-mobile-developers--ud849",
+    "group":"",
+    "keywords": ["mobile","ux","design"],
+    "tags": ["courses"],
+    "image":"images/cards/course-ud849.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Developing Android Apps",
+    "titleFriendly":"",
+    "summary":"Learn Android and build an app!",
+    "url":"https://www.udacity.com/course/developing-android-apps--ud853",
+    "group":"",
+    "keywords": ["start","firstapp","sdk"],
+    "tags": ["courses"],
+    "image":"images/cards/course-ud853.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Android Performance",
+    "titleFriendly":"",
+    "summary":"Optimize your apps for speed and usability.",
+    "url":"https://www.udacity.com/course/android-performance--ud825",
+    "group":"",
+    "keywords": ["performance","battery"],
+    "tags": ["courses"],
+    "image":"images/cards/course-ud825.png",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Enroll in the Android Nanodegree",
+    "titleFriendly":"",
+    "summary":"Sign up to learn about Android and receive a certification of your efforts.",
+    "url":"https://www.udacity.com/android-nanodegree",
+    "group":"",
+    "keywords": ["nanodegree"],
+    "tags": ["courses"],
+    "image":"images/cards/course-nanodegree-lg.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Advanced Android App Development",
+    "titleFriendly":"",
+    "summary":"Productionize and publish your apps.",
+    "url":"https://www.udacity.com/course/advanced-android-app-development--ud855",
+    "group":"",
+    "keywords": ["android, experts"],
+    "tags": ["courses"],
+    "image":"images/cards/course-ud855.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Android Ubiquitous Computing",
+    "titleFriendly":"",
+    "summary":"Extend your apps to Wear, TV, and Auto.",
+    "url":"https://www.udacity.com/course/android-ubiquitous-computing--ud875",
+    "group":"",
+    "keywords": ["wear, tv, auto"],
+    "tags": ["courses"],
+    "image":"images/cards/course-ud875.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Google Play Services",
+    "titleFriendly":"",
+    "summary":"Use Google APIs to improve your apps.",
+    "url":"https://www.udacity.com/course/google-play-services--ud876",
+    "group":"",
+    "keywords": ["google, play services, google services"],
+    "tags": ["courses"],
+    "image":"images/cards/course-ud876.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Android Design for Developers",
+    "titleFriendly":"",
+    "summary":"Learn how to make your apps material.",
+    "url":"https://www.udacity.com/course/android-design-for-developers--ud862",
+    "group":"",
+    "keywords": ["design, pure, material"],
+    "tags": ["courses"],
+    "image":"images/cards/course-ud862.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Android Development for Beginners",
+    "titleFriendly":"",
+    "summary":"Make your first Android app, even if you don't write code.",
+    "url":"https://www.udacity.com/course/android-development-for-beginners--ud837",
+    "group":"",
+    "keywords": ["firstapp",],
+    "tags": ["courses"],
+    "image":"images/cards/course-ud837.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Gradle for Android and Java",
+    "titleFriendly":"",
+    "summary":"Build better apps through automation",
+    "url":"https://www.udacity.com/course/gradle-for-android-and-java--ud867",
+    "group":"",
+    "keywords": ["gradle","studio", "sdk"],
+    "tags": ["courses"],
+    "image":"images/cards/course-ud867.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Watch Faces for Android Wear",
+    "titleFriendly":"",
+    "summary":"Watch faces let you customize the most prominent UI feature of Android wearables. The API is simple enough for rapid development and flexible enough to build something awesome.",
+    "url":"https://www.youtube.com/watch?v=AK38PJZmIW8&list=PLWz5rJ2EKKc-kIrPiq098QH9dOle-fLef",
+    "group":"",
+    "keywords": ["wear", "wearable", "watch face"],
+    "tags": [],
+    "image":"http://i1.ytimg.com/vi/AK38PJZmIW8/maxresdefault.jpg",
+    "lang":"en",
+    "type":"video"
+  },
+  {
+    "title":"Android Support Library",
+    "titleFriendly":"",
+    "summary":"These essential components help you build a great app that works on the huge variety of Android devices, faster.",
+    "url":"https://www.youtube.com/watch?v=3PIc-DuEU2s&list=PLWz5rJ2EKKc9e0d55YHgJFHXNZbGHEXJX",
+    "group":"",
+    "keywords": ["support", "compatibility"],
+    "tags": [],
+    "image":"http://i1.ytimg.com/vi/3PIc-DuEU2s/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Consistent Design with the AppCompat Support Library",
+    "titleFriendly":"",
+    "summary":"Getting a great looking app doesn't have to be hard: AppCompat, part of the Android Support Library, gives you a consistent design baseline that works on all Android 2.1 or higher devices.",
+    "url":"https://www.youtube.com/watch?v=5Be2mJzP-Uw&list=PLWz5rJ2EKKc9e0d55YHgJFHXNZbGHEXJX",
+    "group":"",
+    "keywords": ["support", "compatibility","design-code"],
+    "tags": [],
+    "image":"http://i1.ytimg.com/vi/5Be2mJzP-Uw/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Introducing Gradle",
+    "titleFriendly":"",
+    "summary":"Android Studio uses an entirely new and flexible Gradle-based build system. You will be able to create multiple build variants for a single project, manage library dependencies and always be sure that your application builds correctly across different environments.",
+    "url":"https://www.youtube.com/watch?v=cD7NPxuuXYY&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
+    "group":"",
+    "keywords": ["tools", "studio","gradle"],
+    "tags": [],
+    "image":"http://i1.ytimg.com/vi/cD7NPxuuXYY/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Android Studio Layout Editor",
+    "titleFriendly":"",
+    "summary":"Android Studio includes a rich, visual layout editor that helps developers create better user interfaces. It eliminates the need to deploy the APK on a real device with each change, making iterations faster and helping eliminate common errors earlier in the development process.",
+    "url":"https://www.youtube.com/watch?v=JLLnhwtDoHw&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
+    "group":"",
+    "keywords": ["tools", "studio","layout"],
+    "tags": [],
+    "image":"http://i1.ytimg.com/vi/JLLnhwtDoHw/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Debugging and testing in Android Studio",
+    "titleFriendly":"",
+    "summary":"Learn about new debugger features in Android Studio 1.2: value inlining, quick access to referring objects and a Java .class decompiler, just to name a few. See some new tools and views that let you monitor the CPU and memory performance of your app from within the IDE. ",
+    "url":"https://www.youtube.com/watch?v=2I6fuD20qlY&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
+    "group":"",
+    "keywords": ["tools", "studio","debugging","profiling","performance"],
+    "tags": [],
+    "image":"http://i1.ytimg.com/vi/2I6fuD20qlY/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "tags": [
+      "android",
+      "developerstory",
+      "googleplay",
+      "featured"
+    ],
+    "title": "Android Developer Story: Jelly Button Games — Growing globally through data driven development",
+    "type": "youtube",
+    "url": "http://www.youtube.com/watch?v=Pd49vTkvu0U"
+  },
+  {
+    "title":"Scale with Google Cloud Platform",
+    "titleFriendly":"",
+    "summary":"Build, test, and deploy applications on Google's highly-scalable and reliable infrastructure for your web, mobile and backend solutions.",
+    "url":"https://cloud.google.com/docs/",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"images/cards/cloud-platform_2x.png",
+    "lang":"en",
+    "type":"distribute"
+  },
+  {
+    "title":"Opportunities & Programs",
+    "titleFriendly":"",
+    "summary":"Take advantage of the many ways you can distribute your app to consumers, students, and businesses through Google Play.",
+    "url":"distribute/googleplay/index.html#opportunities",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"images/cards/program-edu_2x.jpg",
+    "lang":"en",
+    "type":"distribute"
+  },
+  {
+    "title":"Android for Work",
+    "titleFriendly":"",
+    "summary":"Learn more about how Android for Work makes your favorite phones and tablets the perfect business tools.",
+    "url":"http://www.android.com/work/",
+    "group":"",
+    "keywords": ["work", "enterprise", "emm"],
+    "tags": [],
+    "image":"images/cards/card-android-work_2x.png",
+    "lang":"en",
+    "type":"about"
+  },
+  {
+    "title":"Android for Work DevBytes",
+    "titleFriendly":"",
+    "summary":"Watch the videos in this playlist to understand more about Android for Work and get tips on developing enterprise apps.",
+    "url":"https://www.youtube.com/watch?v=jQWB_-o1kz4&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
+    "group":"",
+    "keywords": ["work", "enterprise", "emm"],
+    "tags": [],
+    "image":"http://i1.ytimg.com/vi/jQWB_-o1kz4/maxresdefault.jpg",
+    "lang":"en",
+    "type":"about"
+  },
+  {
+    "title":"Discover YouTube cards",
+    "titleFriendly":"",
+    "summary":"Find out more about YouTube cards, the options available, and how to use them to get the most from your YouTube content.",
+    "url":"https://support.google.com/youtube/answer/6140493",
+    "group":"",
+    "keywords": ["youtube", "video", "users", "installs"],
+    "tags": [],
+    "image":"images/cards/card-youtube_2x.png",
+    "lang":"en",
+    "type":"distribute"
+  },
+    {
+    "title":"What is YouTube account good standing?",
+    "titleFriendly":"",
+    "summary":"Learn what it means for an account to be in good standing from the YouTube Help Center.",
+    "url":"https://support.google.com/youtube/answer/2797387",
+    "group":"",
+    "keywords": ["youtube", "video", "users", "installs"],
+    "tags": [],
+    "image":"images/cards/card-youtube_2x.png",
+    "lang":"en",
+    "type":"distribute"
+  },
+
+
+  {
     "lang": "ja",
     "title": "Gaming Everywhere",
     "titleFriendly": "",
@@ -2313,4 +3216,45 @@
     "image": "distribute/images/advertising.jpg",
     "type": "distribute"
   }
-]);
\ No newline at end of file
+]);
+
+var CAROUSEL_OVERRIDE = {
+  "about/versions/lollipop.html": {
+    "image": "images/home/hero-lollipop_2x.png",
+    "heroColor": "#263238",
+    "heroInvert": true,
+    "title": "Android 5.0 Lollipop",
+    "summary": "The Android 5.0 update adds a variety of new features for your apps, such as notifications on the lock screen, an all-new camera API, OpenGL ES 3.1, the new Material design interface, and much more."
+  },
+  "distribute/googleplay/families/about.html": {
+    "image": "images/distribute/hero-family.jpg",
+    "title": "Designed for Families",
+    "summary": "Introducing a new Google Play section to promote family friendly apps. Your apps in the program can benefit from enhanced discoverability in addition to maintaining their existing categories, rankings, and reviews elsewhere on the Google Play store."
+  },
+  "http://www.youtube.com/watch?v=Pd49vTkvu0U&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c": {
+    "image": "images/distribute/hero-jelly-button.jpg",
+    "title": "How Jelly Button Games are growing globally through data",
+    "summary": "To really understand their users, Jelly Button Games analyses over 3 billion events each month using Google Analytics and Google BigQuery."
+  },
+  "http://www.youtube.com/watch?v=700gYRkhkLM&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c": {
+    "image": "images/distribute/hero-outfit7.jpg",
+    "title": "Outfit7 — Building an entertainment company with Google",
+    "summary": "Outfit7, creators of My Talking Tom and My Talking Angela, offer a complete entertainment experience to users spanning mobile apps, user generated and original YouTube content, and a range of toys, clothing, and accessories...."
+  },
+  "http://www.youtube.com/watch?v=MPnH7h12h0U&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c": {
+    "image": "images/distribute/hero-haystack.jpg",
+    "summary": "Haystack TV built a scalable business with six employees and Android TV. Two weeks was all it took for them to bring their mobile app to the big screen."
+  },
+  "http://www.youtube.com/watch?v=ekxABqJeRBc&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c": {
+    "image": "images/distribute/hero-ginlemon.jpg",
+    "title": "How GinLemon is breaking through with Google Play",
+    "summary": "Meet Vincenzo Colucci, developer and founder of GinLemon, which started as a summer holiday joke and has now become a successful global app business on Google Play based in Manfredonia, southern Italy."
+  },
+  "distribute/googleplay/guide.html": {
+    "heroColor": "#fcb94e",
+    "image": "images/distribute/hero-g-play-guidebooks_2x.png",
+    "title": "Finding Success on Google Play",
+    "summary": "We’ve created a downloadable guide to help you find success with your app or game business on Google Play. In it, you’ll find features, tips, and best practices to help you build an effective strategy.",
+    "tags": []
+  }
+};
\ No newline at end of file
diff --git a/docs/html/jd_tag_helpers.js b/docs/html/jd_tag_helpers.js
index 7538e4d..f03b1d7 100644
--- a/docs/html/jd_tag_helpers.js
+++ b/docs/html/jd_tag_helpers.js
@@ -13,6 +13,7 @@
   GOOGLE_RESOURCES,
   GUIDE_RESOURCES,
   SAMPLES_RESOURCES,
+  PREVIEW_RESOURCES,
   TOOLS_RESOURCES,
   TRAINING_RESOURCES,
   YOUTUBE_RESOURCES,
@@ -70,6 +71,7 @@
   'google': GOOGLE_RESOURCES,
   'guide': GUIDE_RESOURCES,
   'samples': SAMPLES_RESOURCES,
+  'preview': PREVIEW_RESOURCES,
   'tools': TOOLS_RESOURCES,
   'training': TRAINING_RESOURCES,
   'youtube': YOUTUBE_RESOURCES,
@@ -86,6 +88,7 @@
   {map:GOOGLE_BY_TAG,arr:GOOGLE_RESOURCES},
   {map:GUIDE_BY_TAG,arr:GUIDE_RESOURCES},
   {map:SAMPLES_BY_TAG,arr:SAMPLES_RESOURCES},
+  {map:PREVIEW_BY_TAG,arr:PREVIEW_RESOURCES},
   {map:TOOLS_BY_TAG,arr:TOOLS_RESOURCES},
   {map:TRAINING_BY_TAG,arr:TRAINING_RESOURCES},
   {map:YOUTUBE_BY_TAG,arr:YOUTUBE_RESOURCES},
diff --git a/docs/html/preview/api-changes.jd b/docs/html/preview/api-changes.jd
new file mode 100644
index 0000000..e4be2a1
--- /dev/null
+++ b/docs/html/preview/api-changes.jd
@@ -0,0 +1,338 @@
+page.title=Behavior Changes
+page.keywords=preview,sdk,compatibility
+sdk.platform.apiLevel=23
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>In this document</h2>
+
+<ol id="toc44" class="hide-nested">
+    <li><a href="#behavior-runtime-permissions">Runtime Permissions</a></li>
+    <li><a href="#behavior-notifications">Notifications</a></li>
+    <li><a href="#behavior-openssl">OpenSSL</a></li>
+    <li><a href="#behavior-project-volta">Project Volta</a>
+        <ol>
+            <li><a href="#behavior-doze">Doze Mode</a></li>
+            <li><a href="#behavior-app-standby">App Standby Mode</a></li>
+        </ol>
+    </li>
+    <li><a href="#behavior-adoptable-storage">Adoptable Storage Devices</a></li>
+    <li><a href="#behavior-apache-http-client">Apache HTTP Client Removal</a></li>
+    <li><a href="#behavior-audiomanager-Changes">AudioManager Changes</a></li>
+    <li><a href="#behavior-test-selection">Text Selection</a></li>
+    <li><a href="#behavior-keystore">Android Keystore Changes</a></li>
+    <li><a href="#behavior-themeable-colorstatelists">Themeable ColorStateLists</a></li>
+    <li><a href="#night-mode">Night Mode</a></li>
+    <li><a href="#behavior-art-runtime">ART Runtime</a></li>
+    <li><a href="#behavior-afw">Android for Work Changes</a></li>
+</ol>
+
+<h2>API Differences</h2>
+<ol>
+<li><a href="">API level 22 to M &raquo;</a> </li>
+</ol>
+
+
+<h2>See Also</h2>
+<ol>
+<li><a href="{@docRoot}preview/api-overview.html">M Developer Preview API Overview</a> </li>
+</ol>
+
+</div>
+</div>
+
+<p>API Level: M</p>
+<p>Along with new features and capabilities, M includes a variety of
+system changes and API behavior changes. This document highlights
+some of the key changes that you should be understand and account for in your apps.</p>
+
+<p>If you have previously published an app for Android, be aware that your app
+  might be affected by these changes in M.</p>
+
+<h2 id="behavior-runtime-permissions">Runtime Permissions</h1>
+<p>This release introduces a new runtime permissions model, where users can now directly manage
+their app permissions at runtime. This model gives users improved visibility and control over
+permissions, while streamlining the installation and auto-update processes for app developers.
+Users can set permissions on or off for all apps running on Android M. However, apps that don’t
+target M cannot request permissions at runtime.</p>
+
+<p>On your apps that target M, make sure to check and request for permissions at
+runtime. To determine if your app has been granted a permission, call the
+new {@code Context.checkSelfPermission()} method. To request for a permission, call the new
+{@code Activity.requestPermission()} method.</p>
+
+<p>For more information on supporting the new permissions model in your app, see the
+<a href="{@docRoot}preview/features/runtime-permissions.html">
+Android M Runtime Permissions guide</a>.</p>
+
+<h2 id="behavior-openssl">OpenSSL</h2>
+<p>Android is moving away from OpenSSL to the
+<a href="https://boringssl.googlesource.com/boringssl/" class="external-link">BoringSSL</a>
+library. If you’re using the Android NDK in your app, don't link against cryptographic libraries
+that are not a part of the NDK API, such as {@code libcrypto.so} and {@code libssl.so}. These
+libraries are not public APIs, and may change or break without notice across releases and devices.
+In addition, you may expose yourself to security vulnerabilities. Instead, modify your
+native code to call the Java cryptography APIs via JNI or to statically link against a
+cryptography library of your choice.</p>
+
+<h2 id="behavior-project-volta">Project Volta</h2>
+<p>This release introduces new power-saving optimizations for idle devices and apps.</p>
+
+<h3 id="behavior-doze">Doze mode</h3>
+<p>If a device is unplugged and not used for up to an hour, it goes into <em>doze</em> mode where
+it attempts to keep the system in a sleep state. In this mode, devices may briefly resume normal
+operations for up to 5 minutes every few hours so that app syncing can occur and the system can
+perform any pending operations.</p>
+
+<p>The following restrictions apply to your apps while in device doze mode:</p>
+<ul>
+<li>Network access is disabled</li>
+<li>Alarms scheduled with the {@link android.app.AlarmManager} class are disabled, except for
+alarms that you've set with the
+{@link android.app.AlarmManager#setAlarmClock(android.app.AlarmManager.AlarmClockInfo,android.app.PendingIntent) setAlarmClock()}
+method</li>
+<li>WiFi scans are not performed</li>
+<li>Syncs and jobs for your sync adapters and {@link android.app.job.JobScheduler} are not
+permitted to run</li>
+</ul>
+</p>
+<p>When the system comes out of doze mode, it executes jobs and syncs that are pending.</p>
+
+<h3 id="behavior-app-standby">App standby mode</h3>
+<p>In M, the system may determine that apps are idle when they are not in active use by the user.
+Your app goes into <em>app standby</em> mode after two days unless the system detects any of these
+signals:</p>
+
+<ul>
+<li>The app has a process currently in the foreground (either as an activity or foreground service,
+or in use by another activity or foreground service)</li>
+<li>The app generates a notification that the user can see</li>
+<li>The user explicitly asks for the app to remain running</li>
+</ul>
+
+<p>If the system is running on battery power, apps that are in standby mode will have their
+network access disabled and their syncs and jobs suspended. When the system is plugged into a power
+supply, it brings an app out of standby mode and executes any jobs and syncs that are pending.</p>
+
+<p>Apps that use <a href="{@docRoot}google/gcm/index.html">Google Cloud Messaging</a> will
+continue to receive messages even if they are idle. When the system is plugged into a power
+supply, apps resume normal operations and can run any pending syncs and jobs.</p>
+
+<p>You can test this feature by connecting a device running M to your development machine and
+calling the following commands:
+</p>
+<pre>
+$ adb shell am broadcast -a android.os.action.DISCHARGING
+$ adb shell am set-idle &lt;packageName&gt; true
+$ adb shell am set-idle &lt;packageName&gt; false
+$ adb shell am get-idle &lt;packageName&gt;
+</pre>
+
+<h2 id="behavior-adoptable-storage">Adoptable Storage Devices</h2>
+<p>
+In M, users can adopt external storage devices such as SD cards. Adopting an external storage
+device encrypts and formats the device to behave like internal storage. This feature allows users
+to move both apps and private data of those apps between storage devices. When moving apps, the
+system respects the <a href="{@docRoot}guide/topics/manifest/manifest-element.html#install">
+{@code android:installLocation}</a> preference in the manifest.</p>
+
+<p>If your app accesses the following APIs or fields, be aware that the file paths they return
+will dynamically change when the app is moved between internal and external storage devices.
+When building file paths, it is strongly recommended that you always call these APIs dynamically.
+Don’t use hardcoded file paths or persist fully-qualified file paths that were built previously.</p>
+
+<ul>
+<li>{@link android.content.Context} methods:
+    <ul>
+        <li>{@link android.content.Context#getFilesDir() getFilesDir()}</li>
+        <li>{@link android.content.Context#getCacheDir() getCacheDir()}</li>
+        <li>{@link android.content.Context#getCodeCacheDir() getCodeCacheDir()}</li>
+        <li>{@link android.content.Context#getDatabasePath(java.lang.String) getDatabasePath()}</li>
+        <li>{@link android.content.Context#getDir(java.lang.String,int) getDir()}</li>
+        <li>{@link android.content.Context#getNoBackupFilesDir() getNoBackupFilesDir()}</li>
+        <li>{@link android.content.Context#getFileStreamPath(java.lang.String) getFileStreamPath()}</li>
+        <li>{@link android.content.Context#getPackageCodePath() getPackageCodePath()}</li>
+        <li>{@link android.content.Context#getPackageResourcePath() getPackageResourcePath()}</li>
+    </ul>
+</li>
+<li>{@link android.content.pm.ApplicationInfo} fields:
+    <ul>
+        <li>{@link android.content.pm.ApplicationInfo#dataDir dataDir}</li>
+        <li>{@link android.content.pm.ApplicationInfo#sourceDir sourceDir}</li>
+        <li>{@link android.content.pm.ApplicationInfo#nativeLibraryDir nativeLibraryDir}</li>
+        <li>{@link android.content.pm.ApplicationInfo#publicSourceDir publicSourceDir}</li>
+        <li>{@link android.content.pm.ApplicationInfo#splitSourceDirs splitSourceDirs}</li>
+        <li>{@link android.content.pm.ApplicationInfo#splitPublicSourceDirs splitPublicSourceDirs}</li>
+    </ul>
+</li>
+</ul>
+
+<p>To debug this feature in the developer preview, you can enable adoption of a USB drive that is
+connected to an Android device through a USB On-The-Go (OTG) cable, by running these
+commands:</p>
+
+<pre>
+$ adb root
+$ sleep 2
+$ adb shell setprop persist.fw.force_adoptable 1
+$ adb reboot
+</pre>
+
+<h2 id="behavior-apache-http-client">Apache HTTP Client Removal</h2>
+<p>This release removes support for the Apache HTTP client. If your app is using this client and
+targets Android 2.3 (API level 9) or higher, use the {@link java.net.HttpURLConnection} class
+instead. This API is more efficient because it reduces network use through transparent compression
+and response caching, and minimizes power consumption. To continue using the Apache HTTP APIs, you
+must first declare the following compile-time dependency in your {@code build.gradle} file:
+</p>
+<pre>
+android {
+    compileSdkVersion M
+    useLibrary 'org.apache.http.legacy'
+}
+</pre>
+
+<h2 id="behavior-audiomanager-Changes">AudioManager Changes</h2>
+<p>Setting the volume directly or muting specific streams via the {@link android.media.AudioManager}
+class is no longer supported. The {@link android.media.AudioManager#setStreamSolo(int,boolean)
+setStreamSolo()} method is deprecated, and you should call the
+{@code AudioManager.requestAudioFocus()} method instead. Similarly, the
+{@link android.media.AudioManager#setStreamMute(int,boolean) setStreamMute()} method is
+deprecated; instead, call the {@code AudioManager.adjustStreamVolume()} method
+and pass in the direction value {@code ADJUST_MUTE} or {@code ADJUST_UNMUTE}.</p>
+
+<h2 id="behavior-test-selection">Text Selection</h2>
+
+<img src="{@docRoot}preview/images/text-selection.gif"
+style="float:right; margin:0 0 20px 30px" width="270" height="480" />
+
+<p>When users selects text in your app, you can now display text selection actions such as
+<em>Cut</em>, <em>Copy</em>, and <em>Paste</em> in a
+<a href="http://www.google.com/design/spec/patterns/selection.html#selection-text-selection"
+class="external-link">floating toolbar</a>. The user interaction implementation is similar to that
+for the contextual action bar, as described in
+<a href="{@docRoot}guide/topics/ui/menus.html#CABforViews">
+Enabling the contextual action mode for individual views</a>.</p>
+
+<p>To implement a floating toolbar for text selection, make the following changes in your existing
+apps:</p>
+<ol>
+<li>In your {@link android.view.View} or {@link android.app.Activity} object, change your
+{@link android.view.ActionMode} calls from
+{@code startActionMode(Callback)} to {@code startActionMode(Callback, ActionMode.TYPE_FLOATING)}.</li>
+<li>Take your existing implementation of ActionMode.Callback and make it extend
+{@code ActionMode.Callback2} instead.</li>
+<li>Override the {@code Callback2.onGetContentRect()} method to provide the coordinates of the
+content {@link android.graphics.Rect} object (such as a text selection rectangle) in the view.</li>
+<li>If the rectangle positioning is no longer valid, and this is the only element to be invalidated,
+call the {@code ActionMode.invalidateContentRect()} method.</li>
+</ol>
+
+<p>If you are using <a href="{@docRoot}tools/support-library/index.html">
+Android Support Library</a> revision 22.2, be aware that floating toolbars are not
+backward-compatible and appcompat takes control over {@link android.view.ActionMode} objects by
+default. This prevents floating toolbars from being displayed in M. To enable
+{@link android.view.ActionMode} support in an
+{@link android.support.v7.app.AppCompatActivity}, call
+{@code android.support.v7.app.AppCompatActivity.getDelegate()}, then call
+{@code android.support.v7.app.AppCompatDelegate.setHandleNativeActionModesEnabled()} on the returned
+{@link android.support.v7.app.AppCompatDelegate} object and set the input
+parameter to {@code false}. This call returns control of {@link android.view.ActionMode} objects to
+the framework. In devices running M, that allows the framework to support
+{@link android.support.v7.app.ActionBar} or floating toolbar modes, while on pre-M devices, only the
+{@link android.support.v7.app.ActionBar} modes are supported.</p>
+
+<h2 id="behavior-keystore">Android Keystore Changes</h2>
+<p>Starting this release, the
+<a href="{@docRoot}training/articles/keystore.html">Android Keystore provider</a> no longer supports
+DSA. ECDSA is still supported.</p>
+
+<p>Keys which do not require encryption at rest will no longer be deleted when secure lock screen
+is disabled or reset (for example, by the user or a Device Administrator). Keys which require
+encryption at rest will be deleted during these events.</p>
+
+<h2 id="behavior-themeable-colorstatelists">Themeable ColorStateLists</h2>
+<p>Theme attributes are now supported in
+{@link android.content.res.ColorStateList} for devices running M. The
+{@link android.content.res.Resources#getColorStateList(int) getColorStateList()} and
+{@link android.content.res.Resources#getColor(int) getColor()} methods have been deprecated. If
+you are calling these APIs, call the new {@code Context.getColorStateList()} or
+{@code Context.getColor()} methods instead. These methods are also available in the
+v4 appcompat library via {@link android.support.v4.content.ContextCompat}.</p>
+
+<h2 id="night-mode">Night Mode (User-configurable Dark Theme)</h2>
+<p>
+Support for the {@code -night} resource qualifier has been updated in M. Previously, night mode was
+only available when a device was docked and in car mode. Starting in M, night mode is available on
+all devices and is user-configurable via <em>Settings > Display > Theme</em>. You can adjust this
+setting globally using {@link android.app.UiModeManager#setNightMode(int) setNightMode()}. The
+Dark theme corresponds to {@link android.app.UiModeManager#MODE_NIGHT_YES}. When the device is in
+night mode, the resource framework will prefer resources that have the -night qualifier. To
+take advantage of user-configurable Dark mode in your app, extend from the
+{@code Theme.Material.DayNight} set of themes rather than {@code Theme.Material} or
+{@code Theme.Material.Light}.
+</p>
+
+<h2 id="behavior-art-runtime">ART Runtime</h2>
+<p>The ART runtime now properly implements access rules for the
+{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} method. This
+change fixes a problem where Dalvik was checking access rules incorrectly in previous versions.
+If your app uses the
+{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} method and you
+want to override access checks, call the
+{@link java.lang.reflect.Constructor#setAccessible(boolean) setAccessible()} method with the input
+parameter set to {@code true}. If your app uses the
+<a href="{@docRoot}tools/support-library/features.html#v7">v7 appcompat library</a> or the
+<a href="{@docRoot}tools/support-library/features.html#v7-recyclerview">v7 recyclerview library</a>,
+you must update your app to use to the latest versions of these libraries. Otherwise, make sure that
+any custom classes referenced from XML are updated so that their class constructors are accessible.</p>
+
+<p>The M release updates the behavior of the dynamic linker. The dynamic linker now understands the
+difference between a library’s {@code soname} and its path
+(<a href="https://code.google.com/p/android/issues/detail?id=6670" class="external-link">
+public bug 6670</a>), and search by {@code soname} is now
+implemented. Apps which previously worked that have bad {@code DT_NEEDED} entries
+(usually absolute paths on the build machine’s file system) may fail when loaded on M.</p>
+
+<p>The {@code dlopen(3) RTLD_LOCAL} flag is now correctly implemented in M. Note that
+{@code RTLD_LOCAL} is the default, so calls to {@code dlopen(3)} that didn’t explicitly use
+{@code RTLD_LOCAL} will be affected (unless your app explicitly used {@code RTLD_GLOBAL}). With
+{@code RTLD_LOCAL}, symbols will not be made available to libraries loaded by later calls to
+{@code dlopen(3)} (as opposed to being referenced by {@code DT_NEEDED} entries).</p>
+</p>
+
+<h2 id="behavior-afw">Android for Work Changes</h2>
+<p>This release includes the following behavior changes for Android for Work:</p>
+<ul>
+<li><strong>Work contacts in personal contexts.</strong> Google Messenger and the Google Dialer
+Call Log now display work contacts when the user views past messages or calls. Furthermore, both
+work and personal contacts are now available to devices over Bluetooth, but you can hide work
+profile contacts through a device policy by calling the new
+{@code DevicePolicyManager.setBluetoothContactSharingDisabled()} method. Initiating a call or
+creating a new message will only show personal contacts, as consistent with the experience in
+Android 5.0.
+</li>
+<li><strong>WiFi configuration removal:</strong> WiFi configurations added by a Profile Owner
+(for example, through calls to the
+{@link android.net.wifi.WifiManager#addNetwork(android.net.wifi.WifiConfiguration)
+addNetwork()} method) are now removed if that work profile is deleted.</li>
+<li><strong>WiFi configuration lockdown:</strong> Any WiFi configuration created by an active Device
+Owner can no longer be modified or deleted by the user. The user can still create and
+modify their own WiFi configurations, so long as the {@link android.os.UserManager} constant
+{@link android.os.UserManager#DISALLOW_CONFIG_WIFI} has not been set for that user.</li>
+<li><strong>VPN in Settings:</strong> VPN apps are now visible in <em>Settings > More > VPN</em>.
+Additionally, the notifications that accompany VPN usage are now specific to whether that VPN is
+configured for a managed profile or the entire device.</li>
+<li><strong>Work status notification:</strong> A status bar briefcase icon now appears whenever
+an app from the managed profile has an activity in the foreground. Furthermore, if the device is
+unlocked directly to the activity of an app in the managed profile, a toast is displayed notifying
+the user that they are within the work profile.
+</li>
+<li><strong>Download Work Policy Controller via Google account addition:</strong> When a Google
+account that requires management via a Work Policy Controller (WPC) app is added to a device
+outside of a managed context, the add account flow now prompts the user to install the
+appropriate WPC. This behavior also applies to accounts added via
+<em>Settings > Accounts</em> in the initial device setup wizard.</li>
+</ul>
diff --git a/docs/html/preview/api-overview.jd b/docs/html/preview/api-overview.jd
new file mode 100644
index 0000000..5ab4b89
--- /dev/null
+++ b/docs/html/preview/api-overview.jd
@@ -0,0 +1,369 @@
+page.title=API Overview
+page.keywords=preview,sdk,compatibility
+sdk.platform.apiLevel=22-mnc
+page.image=images/cards/card-key-changes_16-9_2x.png
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>In this document
+    <a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
+        <span class="more">show more</span>
+        <span class="less" style="display:none">show less</span></a></h2>
+
+<ol id="toc44" class="hide-nested">
+  <li><a href="#backup">Auto Backup for Apps</a></li>
+  <li><a href="#notifications">Notifications</a></li>
+  <li><a href="#authentication">Authentication</a>
+    <ul>
+      <li><a href="#fingerprint-authentication">Fingerprint Authentication</a></li>
+      <li><a href="#confirm-credentials">Confirm Credentials</a></li>
+    </ul>
+  </li>
+  <li><a href="#direct-share">Direct Share</a></li>
+  <li><a href="#voice-interactions">Voice Interactions</a></li>
+  <li><a href="#bluetooth-stylus">Bluetooth Stylus Support</a></li>
+  <li><a href="#audio">New Audio Features</a></li>
+  <li><a href="#afw">New Android for Work Features</a></li>
+</ol>
+
+<h2>API Differences</h2>
+<ol>
+<li><a href="">API level 22 to M &raquo;</a> </li>
+</ol>
+
+</div>
+</div>
+
+<p>The M Developer Preview gives you an advance look at the upcoming release
+for the Android platform, which offers new features for users and app
+developers. This document provides an introduction to the most notable APIs.</p>
+
+<p>The M Developer Preview is intended for <strong>developer early
+adopters</strong> and <strong>testers</strong>. If you are interested in
+influencing the direction of the Android framework,
+<a href="{@docRoot}preview/setup-sdk.html">give the M Developer Preview a
+try</a> and send us your feedback!</p>
+
+<p class="caution"><strong>Caution:</strong> Do not not publish apps
+that use the M Developer Preview to the Google Play store.</p>
+
+<p class="note"><strong>Note:</strong> This document often refers to classes and
+methods that do not yet have reference material available on <a
+href="{@docRoot}">developer.android.com</a>. These API elements are
+formatted in {@code code style} in this document (without hyperlinks). For the
+preliminary API documentation for these elements, download the <a
+href="http://storage.googleapis.com/androiddevelopers/preview/m-developer-preview-reference.zip">
+preview reference</a>.</p>
+
+<h3>Important behavior changes</h3>
+
+<p>If you have previously published an app for Android, be aware that your app might be affected
+by changes in M.</p>
+
+<p>Please see <a href="api-changes.html">Behavior Changes</a> for complete information.</p>
+
+<h2 id="backup">Auto Backup for Apps</h2>
+<p>The system now performs automatic full data backup and restore for apps. This behavior is
+enabled by default for apps targeting M; you do not need to add any additional code. If users
+delete their Google account, their backup data is deleted as well.</p>
+<p>To learn how this feature works and how to configure what to back up on the file system,
+see the <a href="">App Backup for Apps guide</a>.</p>
+
+<h2 id="notifications">Notifications</h2>
+<p>M adds the following API changes for notifications:</p>
+<ul>
+  <li>New {@code NotificationListenerService.INTERRUPTION_FILTER_ALARMS} filter level that
+    corresponds to the new <em>Alarms only</em> do not disturb mode.</li>
+  <li>New {@code Notification.CATEGORY_REMINDER} category value that is used to distinguish
+  user-scheduled reminders from other events
+  ({@link android.app.Notification#CATEGORY_EVENT}) and alarms
+  ({@link android.app.Notification#CATEGORY_ALARM}).</li>
+  <li>New {@code android.graphics.drawable.Icon} class which can be attached to your notifications
+    via the Notification.Builder.setIcon() and Notification.Builder.setLargeIcon() methods.</li>
+  <li>New {@code NotificationManager.getActiveNotifications()} method that allows your apps to
+    find out which of their notifications are currently alive.</li>
+</ul>
+
+<h2 id="authentication">Authentication</h2>
+<p>The M release offers new APIs to let you authenticate users by using their fingerprint scans on
+supported devices, and check how recently the user was last authenticated using a device unlocking
+mechanism (such as a lockscreen password). Use these APIs in conjunction with
+the <a href="{@docRoot}training/articles/keystore.html">Android Keystore system</a>.</p>
+
+<h3 id="fingerprint-authentication">Fingerprint Authentication</h3>
+
+<p>To authenticate users via fingerprint scan, get an instance of the new
+{@code android.hardware.fingerprint.FingerprintManager} class and call the
+{@code FingerprintManager.authenticate()} method. Your app must be running on a device with a
+fingerprint sensor. You must implement the user interface for the fingerprint
+authentication flow on your app, and use the standard fingerprint Android icon in your UI.
+If you are developing multiple apps that use fingerprint authentication, note that each app must
+authenticate the user’s fingerprint independently.
+</p>
+
+<img src="{@docRoot}preview/images/fingerprint-screen_2x.png"
+srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, preview/images/fingerprint-screen_2x.png 2x"
+style="margin:0 0 10px 20px" width="282" height="476" />
+
+<p>To use this feature in your app, first add the {@code USE_FINGERPRINT} permission in your
+manifest.</p>
+
+<pre>
+&lt;uses-permission
+        android:name="android.permission.USE_FINGERPRINT" /&gt;
+</pre>
+
+<p>The following snippet shows how you might listen for fingerprint events in your
+{@code FingerprintManager.AuthenticationCallback} implementation.</p>
+
+<pre>
+// Call this to start listening for fingerprint events
+public void startListening(FingerprintManager.CryptoObject cryptoObject) {
+    if (!isFingerprintAuthAvailable()) {
+        return;
+    }
+    mCancellationSignal = new CancellationSignal();
+    mSelfCancelled = false;
+    mFingerprintManager.authenticate(cryptoObject,
+            mCancellationSignal, this, 0 /* flags */);
+    // Icon to display when prompting users to start a fingerprint scan
+    mIcon.setImageResource(R.drawable.ic_fp_40px);
+}
+
+// Helper method to check if the device supports fingerprint
+// scanning and if the user has enrolled at least one fingerprint.
+public boolean isFingerprintAuthAvailable() {
+    return mFingerprintManager.isHardwareDetected()
+        &amp;&amp; mFingerprintManager.hasEnrolledFingerprints();
+}
+</pre>
+
+<h3 id="confirm-credentials">Confirm Credentials</h3>
+<p>Your app can authenticate users based on how recently they last unlocked their device. You can
+use the same public or secret key to authenticate users into multiple apps. This feature frees
+users from having to remember additional app-specific passwords, and avoids the need for you to
+implement your own authentication user interface.</p>
+
+<p>You can set your own authentication policy by setting constraints against the key that you are
+generating or importing. To set the constraints for using a key, use the
+{@code android.security.KeyPairGeneratorSpec.Builder} and
+{@code android.security.KeyGeneratorSpec.Builder} classes for public key pairs and secret keys
+respectively. If you are importing keys, use the {@link android.security.KeyStoreParameter.Builder}
+class to set your constraints.</p>
+
+<p>The following example shows how you might create a symmetric key in the Keystore which can only be
+used if the user has successfully unlocked the device within the last 5 minutes.</p>
+
+<pre>
+private void createKey() {
+    // Generate a key to decrypt payment credentials, tokens, etc.
+    // This will most likely be a registration step for the user when
+    // they are setting up your app.
+    try {
+        KeyStore ks = KeyStore.getInstance("AndroidKeyStore");
+        ks.load(null);
+        KeyGenerator keyGenerator = KeyGenerator.getInstance("AES",
+                "AndroidKeyStore");
+        keyGenerator.init(new KeyGeneratorSpec.Builder(this)
+                // Alias of the entry in Android KeyStore where the key will appear
+                .setAlias(KEY_NAME)
+                // Key use constraints
+                .setPurposes(KeyStoreKeyProperties.Purpose.ENCRYPT
+                    | KeyStoreKeyProperties.Purpose.DECRYPT)
+                .setBlockModes("CBC")
+                .setUserAuthenticationRequired(true)
+                // Require that the user has unlocked in the last 5 minutes
+                .setUserAuthenticationValidityDurationSeconds(5 * 60)
+                .setEncryptionPaddings("PKCS7Padding")
+                .build());
+        keyGenerator.generateKey();
+    } catch (NoSuchAlgorithmException | NoSuchProviderException
+            | InvalidAlgorithmParameterException | KeyStoreException
+            | CertificateException | IOException e) {
+          throw new RuntimeException(e);
+    }
+}
+</pre>
+
+<p>To determine the last time users logged into their account, call the
+{@code android.accounts.AccountManager.confirmCredentials()} method. If the call is successful, the
+method returns an bundle that includes a {@code KEY_LAST_AUTHENTICATED_TIME} value which indicates
+the last time, in milliseconds, that the credential for that account was validated or created.</p>
+
+<h2 id="direct-share">Direct Share</h2>
+
+<img src="{@docRoot}preview/images/direct-share-screen_2x.png"
+srcset="{@docRoot}preview/images/direct-share-screen.png 1x, preview/images/direct-share-screen_2x.png 2x"
+style="float:right; margin:0 0 20px 30px" width="312" height="385" />
+
+<p>This release provides you with APIs to makes sharing intuitive and quick for users. You can now
+define <em>deep links</em> that target a specific activity in your app. These deep links are
+exposed to users via the <em>Share</em> menu. This feature allows users to share content to
+targets, such as contacts, within other apps. For example, the deep link might launch an
+activity in another social network app, which lets the user share content directly to a specific
+friend or community in that app.</p>
+
+<p>To enable sharing via deep links, you must define a class that extends the
+{@code android.service.} <br>
+{@code chooser.ChooserTargetService} class. Declare your
+{@code ChooserTargetService} in the manifest. Within that declaration, specify the
+{@code BIND_CHOOSER_TARGET_SERVICE} permission and an intent filter with the
+{@code SERVICE_INTERFACE} action.</p>
+<p>The following example shows how you might declare the {@code ChooserTargetService} in your
+manifest.</p>
+<br>
+<br>
+<br>
+<pre>
+&lt;service android:name=".ChooserTargetService"
+        android:label="&#64;string/service_name"
+        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.service.chooser.ChooserTargetService" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/service&gt;
+</pre>
+
+<p>For each activity that you want to expose to the {@code ChooserTargetService}, add a
+{@code &lt;meta-data&gt;} element with the name
+{@code "android.service.chooser.chooser_target_service"} in your app manifest.
+</p>
+
+<pre>
+&lt;activity android:name=".MyShareActivity”
+        android:label="&#64;string/share_activity_label"&gt;
+    &lt;intent-filter>
+        &lt;action android:name="android.intent.action.SEND" /&gt;
+    &lt;/intent-filter>
+&lt;meta-data
+        android:name="android.service.chooser.chooser_target_service"
+        android:value=".ChooserTargetService" /&gt;
+&lt;/activity>
+</pre>
+
+<h2 id="voice-interactions">Voice Interactions</h2>
+<p>
+This release provides a new voice interaction API which, together with
+<a href="https://developers.google.com/voice-actions/" class="external-link">Voice Actions</a>,
+allows you to build conversational voice experiences into your apps. Call the
+{@code android.app.Activity.isVoiceInteraction()} method to determine if your activity was
+started in response to a voice action. If so, your app can use the
+{@code android.app.VoiceInteractor} class to request a voice confirmation from the user, select
+from a list of options, and more.</p>
+<p>To learn more about implementing voice actions, see the voice interaction API
+<a href="https://developers.google.com/voice-actions/interaction/"
+class="external-link">guide</a>.
+</p>
+
+<h2 id="bluetooth-stylus">Bluetooth Stylus Support</h2>
+<p>The M release provides improved support for user input using a Bluetooth stylus. If the user
+touches a stylus with a button on the screen of your app, the
+{@link android.view.MotionEvent#getToolType(int) getTooltype()} method now returns
+{@code TOOL_TYPE_STYLUS}. The {@link android.view.MotionEvent#getButtonState() getButtonState()}
+method returns {@link android.view.MotionEvent#BUTTON_SECONDARY} when the user
+presses the primary stylus button. If the stylus has a second button, the same method returns
+{@link android.view.MotionEvent#BUTTON_TERTIARY} when the user presses it. If the user presses
+both buttons simultaneously, the method returns both these values. In addition, the system reports
+the user button-press action to the new {@code View.onStylusButtonPressListener} and
+{@code GestureDetector.OnStylusButtonPressListener} callbacks in your activity, if you have
+registered these listeners in your app.</p>
+
+<h2 id="audio">New Audio Features</h2>
+
+<p>This release adds enhancements to audio processing on Android, including: </p>
+<ul>
+  <li>Support for the <a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a>
+protocol, with the new {@code android.media.midi} APIs. Use these APIs to send and receive MIDI
+events.</li>
+  <li>New {@code android.media.AudioRecord.Builder} and {@code android.media.AudioTrack.Builder}
+classes to create digital audio capture and playback objects respectively, and configure audio
+source and sink properties to override the system defaults.</li>
+  <li>API hooks for associating audio and input devices. This is particularly useful if your app
+allows users to start a voice search from a game controller or remote control connected to Android
+TV. The system invokes the new {@code android.app.Activity.onSearchRequested()} callback when the
+user starts a search. To determine if the user's input device has a built-in microphone, retrieve
+the {@link android.view.InputDevice} object from that callback, then call the new
+{@code InputDevice.hasMic()} method.</li>
+  <li>New {@code android.media.AudioDevicesManager} class which lets you retrieve a list of all
+attached source and sink audio devices. You can also specify an
+{@code android.media.OnAudioDeviceConnectionListener} object if you want your app to be notified
+when an audio device is connected or disconnected.</li>
+</ul>
+
+<h2 id="afw">New Android for Work Features</h2>
+<p>This release includes the following new APIs for Android for Work:</p>
+<ul>
+  <li><strong>Enhanced controls for Corporate-Owned, Single-Use devices:</strong> The Device Owner
+can now control the following settings to improve management of
+Corporate-Owned, Single-Use (COSU) devices:
+  <ul>
+    <li>Disable or re-enable the keyguard with the
+{@code DevicePolicyManager.setKeyguardEnabledState()} method.</li>
+    <li>Disable or re-enable the status bar (including quick settings, notifications, and the
+navigation swipe-up gesture that launches Google Now) with the
+{@code DevicePolicyManager.setStatusBarEnabledState()} method.</li>
+    <li>Disable or re-enable safe boot with the {@link android.os.UserManager} constant
+{@code DISALLOW_SAFE_BOOT}.</li>
+    <li>Prevent the screen from turning off while plugged in with the
+  {@link android.provider.Settings.Global} constant {@code STAY_ON_WHILE_PLUGGED_IN}.</li>
+  </ul>
+  </li>
+  <li><strong>Silent install and uninstall of apps by Device Owner:</strong> A Device Owner can now
+silently install and uninstall applications using the {@link android.content.pm.PackageInstaller}
+APIs, independent of Google Play for Work. You can now provision devices through a Device Owner that
+fetches and installs apps without user interaction. This feature is useful for enabling one-touch
+provisioning of kiosks or other such devices without activating a Google account.</li>
+<li><strong>Silent enterprise certificate access: </strong> When an app calls
+{@link android.security.KeyChain#choosePrivateKeyAlias(android.app.Activity,android.security.KeyChainAliasCallback,java.lang.String[],java.security.Principal[],java.lang.String,int,java.lang.String) choosePrivateKeyAlias()},
+prior to the user being prompted to select a certificate, the Profile or Device Owner can now call
+the {@code DeviceAdminReceiver.onChoosePrivateKeyAlias()} method to provide the alias silently to
+the requesting application. This feature lets you grant managed apps access to certificates
+without user interaction.</li>
+<li><strong>Auto-acceptance of system updates.</strong> By setting a system update policy with
+{@code DevicePolicyManager.setSystemUpdatePolicy()}, a Device Owner can now auto-accept a system
+update, for instance in the case of a kiosk device, or postpone the update and prevent it being
+taken by the user for up to 30 days. Furthermore, an administrator can set a time window in which an
+update must be taken, for example during the hours when a kiosk device is not in use. When a
+system update is available, the system checks if the Work Policy Controller app has set a system
+update policy, and behaves accordingly.
+</li>
+<li>
+<strong>Delegated certificate installation.</strong> A Profile or Device Owner can now grant a
+third-party app the ability to call these {@link android.app.admin.DevicePolicyManager} certificate
+management APIs:
+<ul>
+  <li>{@link android.app.admin.DevicePolicyManager#getInstalledCaCerts(android.content.ComponentName)
+getInstalledCaCerts()}</li>
+  <li>{@link android.app.admin.DevicePolicyManager#hasCaCertInstalled(android.content.ComponentName,byte[])
+hasCaCertInstalled()}</li>
+  <li>{@link android.app.admin.DevicePolicyManager#installCaCert(android.content.ComponentName,byte[])
+installCaCert()}</li>
+  <li>{@link android.app.admin.DevicePolicyManager#uninstallCaCert(android.content.ComponentName,byte[])
+uninstallCaCert()}</li>
+  <li>{@link android.app.admin.DevicePolicyManager#uninstallAllUserCaCerts(android.content.ComponentName)
+uninstallAllUserCaCerts()}</li>
+  <li>{@link android.app.admin.DevicePolicyManager#installKeyPair(android.content.ComponentName,java.security.PrivateKey,java.security.cert.Certificate,java.lang.String)
+installKeyPair()}</li>
+</ul>
+</li>
+<li><strong>Enterprise factory reset protection.</strong> When provisioning a Device Owner, you can
+now configure parameters for bypassing Factory Reset Protection (FRP), by setting the
+{@code DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS} bundle. An NFC Programmer
+app can provide these parameters after a device has been reset to bypass FRP and provision the device,
+without requiring the previously configured Google account. If you don't modify these parameters,
+FRP remains in-place and prevents the device from being activated without the previously activated
+Google credentials.</li>
+<li><strong>Data usage tracking.</strong> A Profile or Device Owner can now query for the data
+usage statistics visible in <em>Settings > Data</em> usage by using the new
+{@code android.app.usage.NetworkStatsManager} methods. Profile Owners are automatically granted
+permission to query data on the profile they manage, while Device Owners get access to usage data
+of the managed primary user.</li>
+</ul>
+
+<p class="note">
+  For a detailed view of all API changes in the M Developer Preview, see the <a href=
+  "{@docRoot}preview/reference.html">API Differences Report</a>.
+</p>
\ No newline at end of file
diff --git a/docs/html/preview/backup/index.jd b/docs/html/preview/backup/index.jd
new file mode 100644
index 0000000..9ef5db0
--- /dev/null
+++ b/docs/html/preview/backup/index.jd
@@ -0,0 +1,300 @@
+page.title=Automatic App Data Backup
+page.tags=backup
+
+@jd:body
+
+<p>
+  Users often invest significant time and effort collecting data and setting preferences within
+  apps. Preserving that data for users if they replace a broken device or upgrade to a new one is
+  an important part of ensuring a great user experience. The Android M Preview system helps ensure
+  a good experience for users in this circumstances by automatically backing up app data to the
+  cloud.
+</p>
+
+<p>
+  This behavior is enabled by default for all apps installed on devices running Android M or
+  higher. No additional app code is required. The system provides users with the ability opt out of
+  automatic data backups for individual apps. You can also choose to limit what data from your app
+  is backed up.
+</p>
+
+<p>
+  This document describes the new system behavior and how to specify what data is backed up for
+  your app.
+</p>
+
+<h2>Overview</h2>
+
+<p>
+  The automatic backup feature preserves the data your app creates on a user device by uploading to
+  the user’s Google Drive account and encrypting it. There is no charge to you or the user for data
+  storage and the saved data does not count towards the user's personal Drive quota. During the M
+  Preview period, users can store up to 25MB per Android app.
+</p>
+
+<p>
+  Automatic backups occur every 24 hours, when the device is idle, charging, and connected to a
+  Wi-Fi network. When these conditions are met, the Backup Manager service uploads all available
+  backup data to the cloud. When the user transitions to a new device, or uninstalls and reinstalls
+  the backed up application, a restore operation will take place, copying the backed up data into
+  the newly installed application’s data directory.
+</p>
+
+
+<h3>Automatically Excluded Data Files</h3>
+
+<p>
+  Not all app data should be backed up, such as temporary files and caches, so the automatic backup
+  service excludes certain data files by default:
+</p>
+
+<ul>
+  <li>Files in the directories referred to by the <code><a href=
+  "{@docRoot}reference/android/content/Context.html#getCacheDir()">getCacheDir()</a></code> and
+  <code><a href=
+  "{@docRoot}reference/android/content/ContextWrapper.html#getCodeCacheDir()">getCodeCacheDir()</a></code>
+  methods.
+  </li>
+
+  <li>Files located on external storage, unless they reside in the directory referred to by the
+  <code><a href=
+  "{@docRoot}reference/android/content/Context.html#getExternalFilesDir(java.lang.String)">getExternalFilesDir()</a></code>
+  method.
+  </li>
+
+  <li>Files located in the directory referred to by the <code><a href=
+  "{@docRoot}reference/android/content/Context.html#getNoBackupFilesDir()">getNoBackupFilesDir()</a></code>
+  method.
+  </li>
+</ul>
+
+<h2>Configuring Data Backup</h2>
+
+<p>
+  The data created by any app installed on an M device is backed up, except for the automatically
+  excluded files listed in the previous section. You can further limit and configure what data gets
+  backed up from your app using settings in your app manifest.
+</p>
+
+<h3>Including or Excluding Data</h3>
+
+<p>
+  Depending on what data your application needs and how you save it, you may need to set specific
+  rules for including or excluding certain files or directories. The automatic backup service
+  supports setting these backup rules through use of an XML configuration file and the app
+  manifest. In the app manifest, you can specify a backup scheme configuration file as shown in the
+  following example:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:tools="http://schemas.android.com/tools"
+        package="com.my.appexample"&gt;
+    &lt;uses-sdk android:minSdkVersion="9"/&gt;
+    &lt;uses-sdk android:targetSdkVersion="android-MNC"/&gt;
+    &lt;application ...
+<strong>        android:fullBackupContent="&#64;xml/mybackupscheme"&gt;</strong>
+    &lt;/application&gt;
+    ...
+&lt;/manifest&gt;
+</pre>
+
+<p>
+  In this example code, the android:fullBackupContent attribute specifies an XML file, located in
+  the <code>res/xml/</code> directory of your app development project, named
+  <code>mybackupscheme.xml</code>. This configuration file can include rules for what files are
+  backed up. The following example code shows a configuration file that excludes a specific file
+  from backups:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+	&lt;full-backup-content&gt;
+    &lt;exclude domain="database" path="device_info.db"/&gt;
+&lt;/full-backup-content&gt;
+</pre>
+
+<p>
+  This backup configuration only excludes a specific database file from being backed up. All other
+  files are backed up.
+</p>
+
+<h4>Backup Configuration Syntax</h4>
+
+<p>
+  The backup service configuration allows you to specify what files to include or exclude from
+  backup. The syntax for the data backup configuration xml file is as follows:
+</p>
+
+<pre>
+&lt;full-backup-content&gt;
+    &lt;include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
+    &lt;exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
+&lt;/full-backup-content&gt;
+</pre>
+
+<p>
+  The following elements and attributes allow you to specify the files to include and exclude from
+  backup:
+</p>
+
+<ul>
+  <li>
+	<code>&lt;include&gt;</code>. Use this element if you want to specify a set of resources to
+	back up, instead of having the system back up all data in your app by default. When you specify
+	an <code>&lt;include&gt;</code> tag, the system backs up only the resources specified with this
+	element.
+  </li>
+
+  <li>
+	<code>&lt;exclude&gt;</code>. Use this element to specify a set of resources to exclude from
+	backup. The system backs up all data in your app, except for resources specified with this
+	element.
+  </li>
+
+  <li>
+	<code>domain.</code> The type of resource you want to include or exclude from backup. The valid
+	values you can specify for this attribute include:
+  </li>
+
+  <li style="list-style: none">
+	<ul>
+	  <li>
+		<code>root</code>. Specifies that the resource is in the app’s root directory.
+	  </li>
+
+	  <li>
+		<code>file</code>. Corresponds to a resource in the directory returned by the
+		<code><a href="{@docRoot}reference/android/content/Context.html#getFilesDir()">getFilesDir()</a></code>
+		method.
+	  </li>
+
+	  <li>
+		<code>database</code>. Corresponds to a database returned by the <code><a href=
+		"{@docRoot}reference/android/content/Context.html#getDatabasePath(java.lang.String)">getDatabasePath()</a></code>
+		method or by using the <code><a href=
+		"{@docRoot}reference/android/database/sqlite/SQLiteOpenHelper.html">SQLiteOpenHelper</a></code>
+		class.
+	  </li>
+
+	  <li>
+		<code>sharedpref</code>. Corresponds to a <code><a href=
+		"{@docRoot}reference/android/content/SharedPreferences.html">SharedPreferences</a></code>
+		object returned by the <code><a href=
+		"{@docRoot}reference/android/content/Context.html#getSharedPreferences(java.lang.String,%20int)">
+		getSharedPreferences()</a></code> method.
+	  </li>
+
+	  <li>
+		<code>external</code>. Specifies that the resource is in external storage, and corresponds
+		to a file in the directory returned by the <code><a href=
+		"{@docRoot}reference/android/content/Context.html#getExternalFilesDir(java.lang.String)">getExternalFilesDir()</a></code>
+		method.
+	  </li>
+
+	  <li>
+		<code>path</code>. The file path to a resource that you want to include or exclude from
+		backup.
+	  </li>
+	</ul>
+  </li>
+</ul>
+
+
+<h3>Prohibiting Data Backups</h3>
+
+<p>
+  You can choose to prevent automatic backups of any of your app data by setting the
+  <code>android:allowBackup</code> attribute to <code>false</code> in the application element of
+  your manifest. This setting is illustrated in the following example code:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:tools="http://schemas.android.com/tools"
+        package="com.my.appexample"&gt;
+    &lt;uses-sdk android:minSdkVersion="9"/&gt;
+    &lt;uses-sdk android:targetSdkVersion="android-MNC"/&gt;
+    &lt;application ...
+<strong>        android:allowBackup="false"&gt;</strong>
+    &lt;/application&gt;
+    ...
+&lt;/manifest&gt;
+</pre>
+
+
+<h2>Testing Backup Configuration</h2>
+
+<p>
+  Once you have created a backup configuration, you should test it to make sure your app saves data
+  and can be restored properly.
+</p>
+
+
+<h4>Enabling Backup Logging</h4>
+
+<p>
+  To help determine how the backup feature is parsing your XML file, enable logging before
+  performing a test backup:
+</p>
+
+<pre>$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE</pre>
+
+<h4>Testing Backup</h4>
+
+<p>
+  To manually enable a backup, call the following command, specifying the package name for your app
+  as the <code>&lt;PACKAGE&gt;</code> parameter:
+</p>
+
+<pre>$ adb shell bmgr fullbackup &lt;PACKAGE&gt;</pre>
+
+<h4>Testing Restore</h4>
+<p>
+  To manually initiate a restore after your app data is backed-up, call the following command,
+  specifying the package name for your app as the <code>&lt;PACKAGE&gt;</code> parameter:
+</p>
+
+<pre>$ adb shell bmgr restore &lt;PACKAGE&gt;</pre>
+
+<p class="warning">
+  <b>Warning:</b> This action stops your app and wipes its data before performing the restore
+  operation.
+</p>
+
+<p>
+  You initiate the restore process for your app by uninstalling and reinstalling your app. The app
+  data is automatically restored from the cloud once the app installation is complete.
+</p>
+
+
+<h4>Troubleshooting Backups</h4>
+
+<p>
+  If you run into issues, clear the backup data and associated metadata by calling this command.
+</p>
+
+<pre>$ adb shell bmgr wipe &lt;TRANSPORT&gt; &lt;PACKAGE&gt;</pre>
+
+<p>
+  The <code>&lt;TRANSPORT&gt;</code> value must be prefixed by <code>com.google.android.gms</code>.
+  To get the list of transports, call the following command:
+</p>
+
+<pre>$ adb shell bmgr list transports</pre>
+
+<h2>Known Issues</h2>
+
+<p>The following are known issues with the automatic backup service:</p>
+
+<ul>
+  <li>For apps that use Google Cloud Messaging for push notifications, there is a known issue where
+  backing up the registration id returned by Google Cloud Messaging registration can break push
+  notifications for the restored application. It is important to query the API for a new
+  registration id after being installed on a new device - which will not be the case if the old
+  registration id was backed up. To avoid this, exclude the registration id from the set of backed
+  up files.
+  </li>
+</ul>
\ No newline at end of file
diff --git a/docs/html/preview/data-binding/guide.jd b/docs/html/preview/data-binding/guide.jd
new file mode 100644
index 0000000..49b690f
--- /dev/null
+++ b/docs/html/preview/data-binding/guide.jd
@@ -0,0 +1,908 @@
+page.title=Data Binding Guide
+
+@jd:body
+<p>Data Binding allows you write declarative layouts and minimize the glue code
+that is necessary to bind your application logic and layouts.</p>
+
+
+<h2 id=build_environment>Build Environment</h2>
+
+
+<p><strong>Setting Up Work Environment:</strong></p>
+
+<p>Data Binding EAP only supports gradle.</p>
+
+<p>To set up your application, unzip the provided bundle to a location. It has 3
+sections</p>
+
+<ul>
+  <li> <em>maven-repo:</em> which keeps the data-binding libraries
+  <li> <em>samples:</em> Sample applications
+  <li> <em>databinding.properties:</em> Properties file that can be used to integrate with your app
+</ul>
+
+<p>Add the following section to the project’s build.gradle file (not the module&apos;s
+build.gradle) and replace <code><BUNDLE_FOLDER> </code>with the absolute path of the bundle that you’ve unzipped in the previous step.</p>
+
+<pre class=prettyprint>
+buildscript {
+   <strong>def </strong>eapFolder = &apos;&lt;BUNDLE_FOLDER>&apos;
+<strong>   def </strong>Properties props = <strong>new </strong>Properties()
+   props.load(<strong>new </strong>FileInputStream(<strong>"</strong>${eapFolder}<strong>/databinding.properties"</strong>))
+   props.mavenRepoDir = <strong>"</strong>${eapFolder}<strong>/</strong>${props.mavenRepoName}<strong>"
+   </strong>ext.config = props
+   repositories {
+       jcenter()
+       maven {
+           url config.mavenRepoDir
+       }
+   }
+   dependencies {
+       classpath <strong>"com.android.tools.build:gradle:1.1.3"
+       </strong>classpath <strong>"com.android.databinding:dataBinder:</strong>${config.snapshotVersion}<strong>"
+<em></strong>   </em>}
+}
+allprojects {
+   repositories {
+       jcenter()
+       maven {
+           url config.mavenRepoDir
+       }
+   }
+}
+</pre>
+
+<p>Next, add the following lines to the <em>build.gradle</em>
+file of each module that will use data-binding. The application module must
+have this, even if only its libraries use data binding.</p>
+
+<pre class=prettyprint>
+apply plugin: <strong>&apos;com.android.databinding&apos;
+</strong>dependencies {
+    compile <strong>"com.android.databinding:library:</strong>${config.snapshotVersion}<strong>"
+</strong>    compile <strong>"com.android.databinding:baseLibrary:</strong>${config.snapshotVersion}<strong>"
+</strong>    compile <strong>"com.android.databinding:adapters:</strong>${config.snapshotVersion}<strong>"
+</strong>    provided <strong>"com.android.databinding:annotationprocessor:</strong>${config.snapshotVersion}<strong>"
+</strong>}
+</pre>
+
+
+<h2 id="data_binding_layout_files">Data Binding Layout Files</h2>
+
+
+<h3 id="writing_expressions">Writing your first data binding expressions:</h3>
+
+<p>Data-binding layout files are slightly different and start with a root tag of
+<strong>layout</strong> followed by a <strong>data</strong> element and a
+<strong>view</strong> root element. This view element is what your root would
+be in a non-binding layout file.A sample file looks like this:</p>
+
+<pre class=prettyprint>
+<em>&lt;?<strong></em>xml version="1.0" encoding="utf-8"<em></strong>?>
+</em>&lt;<strong>layout xmlns:android="http://schemas.android.com/apk/res/android"</strong>>
+   &lt;<strong>data</strong>>
+       &lt;<strong>variable name="user" type="com.example.User"</strong>/>
+   &lt;/<strong>data</strong>>
+   &lt;<strong>LinearLayout
+       android:orientation="vertical"
+       android:layout_width="match_parent"
+       android:layout_height="match_parent"</strong>>
+       &lt;<strong>TextView android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:text="&commat;{user.firstName}"</strong>/>
+       &lt;<strong>TextView android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:text="&commat;{user.lastName}"</strong>/>
+   &lt;/<strong>LinearLayout</strong>>
+&lt;/<strong>layout</strong>>
+</pre>
+
+<p>The user <strong>variable</strong> within <strong>data</strong> describes a property that may be used within this layout.</p>
+
+<pre class=prettyprint>
+&lt;<strong>variable name="user" type="com.example.User"</strong>/>
+</pre>
+
+<p>Expressions within the layout are written in the attribute properties using the
+“<code>&commat;{}</code>” syntax. Here, the TextView’s text is set to the firstName property of user:</p>
+<pre class=prettyprint>
+&lt;<strong>TextView android:layout_width="wrap_content"
+          android:layout_height="wrap_content"
+          android:text="&commat;{user.firstName}"</strong>/>
+</pre>
+
+
+<h3 id="data_object">Data Object</h3>
+
+<p>Let’s assume for now that you have a plain-old Java object (POJO) for User:</p>
+<pre class=prettyprint>
+<strong>public class </strong>User {
+   <strong>public final </strong>String <strong>firstName</strong>;
+   <strong>public final </strong>String <strong>lastName</strong>;
+   <strong>public </strong>User(String firstName, String lastName) {
+       <strong>this</strong>.<strong>firstName </strong>= firstName;
+       <strong>this</strong>.<strong>lastName </strong>= lastName;
+   }
+}
+</pre>
+
+<p>This type of object has data that never changes. It is common in applications
+to have data that is read once and never changes thereafter. It is also
+possible to use a JavaBeans objects:</p>
+<pre class=prettyprint>
+<strong>public class </strong>User {
+   <strong>private final </strong>String <strong>firstName</strong>;
+   <strong>private final </strong>String <strong>lastName</strong>;
+   <strong>public </strong>User(String firstName, String lastName) {
+       <strong>this</strong>.<strong>firstName </strong>= firstName;
+       <strong>this</strong>.<strong>lastName </strong>= lastName;
+   }
+   <strong>public </strong>String getFirstName() {
+       <strong>return this</strong>.<strong>firstName</strong>;
+   }
+   <strong>public </strong>String getLastName() {
+       <strong>return this</strong>.<strong>lastName</strong>;
+   }
+}
+</pre>
+
+<p>From the perspective of data binding, these two classes are equivalent. The
+expression <strong><code>&commat;{user.lastName}</code></strong> used for the TextView’s <strong><code>android:text</code></strong> attribute will access the <strong><code>firstName</code></strong> field in the former class and the <code>getFirstName()</code> method in the latter class.
+</p><h3 id=binding_data>Binding Data</h3>
+
+<p>By default, a Binding class will be generated based on the name of the layout
+file, converting it to Pascal case and suffixing “Binding” to it. The above
+layout file was <code>activity_main.xml</code> so the generate class was <code>ActivityMainBinding</code>. This class holds all the bindings from the layout properties (e.g. the <code>user</code> variable) to the layout’s Views and knows how to assign values for the binding
+expressions.The easiest means for creating the bindings is to do it while inflating:
+</p>
+
+<pre class=prettyprint>
+&commat;Override
+<strong>protected void </strong>onCreate(Bundle savedInstanceState) {
+   <strong>super</strong>.onCreate(savedInstanceState);
+   ActivityMainBinding binding = DataBindingUtil.<em>setContentView</em>(<strong>this</strong>, R.layout.<em><strong>main_activity</strong></em>);
+   User user = <strong>new </strong>User(<strong>"Test"</strong>, <strong>"User"</strong>);
+   binding.setUser(user);
+}
+</pre>
+
+<p>You’re done! Run the application and you’ll see Test User in the UI.Alternatively, you can get the view via:
+</p><pre class=prettyprint>
+MainActivityBinding binding = MainActivityBinding.<em>inflate</em>(getLayoutInflater());
+</pre>
+
+<p>If you are using data binding items inside a ListView or RecyclerView adapter,
+you may prefer to use:
+</p><pre class=prettyprint>
+ListItemBinding binding = ListItemBinding.inflate(layoutInflater, viewGroup,
+false);
+//or
+ListItemBinding binding = DataBindingUtil.<em>inflate</em>(layoutInflater, R.layout.<em><strong>list_item</strong></em>, viewGroup, <strong>false</strong>);
+</pre>
+
+
+<h2 id=layout_details>Layout Details</h2>
+
+
+<h3 id=imports>Imports</h3>
+
+<p>Zero or more <strong><code>import</code></strong> elements may be used inside the <strong><code>data</code></strong> element. These allow easy reference to classes inside your layout file, just
+like in Java.
+</p><pre class=prettyprint>
+&lt;<strong>data</strong>>
+    &lt;<strong>import type="android.view.View"</strong>/>
+&lt;/<strong>data</strong>>
+</pre>
+
+<p>Now, View may be used within your binding expression:
+</p><pre class=prettyprint>
+&lt;<strong>TextView
+   android:text="&commat;{user.lastName}"
+   android:layout_width="wrap_content"
+   android:layout_height="wrap_content"
+   android:visibility="&commat;{user.isAdult ? View.VISIBLE : View.GONE}"</strong>/>
+</pre>
+
+<p>When there are class name conflicts, one of the classes may be renamed to an
+“alias:”</p>
+<pre class=prettyprint>
+&lt;<strong>import type="android.view.View"</strong>/>
+&lt;<strong>import type="com.example.real.estate.View"
+        alias="Vista"</strong>/>
+</pre>
+
+<p>Now, <strong><code>Vista</code></strong> may be used to reference the <code>com.example.real.estate.View</code> and <strong><code>View</code></strong> may be used to reference <code>android.view.View </code>within the layout file.Imported types may be used as type references in variables and expressions:</p>
+<pre class=prettyprint>
+&lt;<strong>data</strong>>
+    &lt;<strong>import type="com.example.User"</strong>/>
+    &lt;<strong>import type="java.util.List"</strong>/>
+    &lt;<strong>variable name="user" type="User"</strong>/>
+    &lt;<strong>variable name="userList" type="List&lt;User&gt;"</strong>/>
+&lt;/<strong>data</strong>>
+…
+&lt;<strong>TextView
+   android:text="&commat;{((User)(user.connection)).lastName}"
+   android:layout_width="wrap_content"
+   android:layout_height="wrap_content"</strong>/>
+</pre>
+
+<p>Imported types may also be used when referencing static fields and methods in
+expressions:</p>
+<pre class=prettyprint>
+&lt;<strong>data</strong>>
+    &lt;<strong>import type="com.example.MyStringUtils"</strong>/>
+    &lt;<strong>variable name="user" type="com.example.User"</strong>/>
+&lt;/<strong>data</strong>>
+…
+&lt;<strong>TextView
+   android:text="&commat;{MyStringUtils.capitalize(user.lastName)}"
+   android:layout_width="wrap_content"
+   android:layout_height="wrap_content"</strong>/>
+</pre>
+
+<p>Just as in Java, <code>java.lang.*</code> is imported automatically.</p>
+<h3 id=variables>Variables</h3>
+
+<p>Any number of <strong><code>variable</code></strong> elements may be used inside the <strong><code>data</code></strong> element. Each <strong><code>variable</code></strong> element describes a property that may be set on the layout to be used in
+binding expressions within the layout file.</p>
+<pre class=prettyprint>
+&lt;<strong>data</strong>>
+    &lt;<strong>import type="android.graphics.drawable.Drawable"</strong>/>
+    &lt;<strong>variable name="user"  type="com.example.User"</strong>/>
+    &lt;<strong>variable name="image" type="Drawable"</strong>/>
+    &lt;<strong>variable name="note"  type="String"</strong>/>
+&lt;/<strong>data</strong>>
+</pre>
+
+<p>The variable types are inspected at compile time, so if a variable implements <a href="#observable_objects">Observable</a>, <a href="#observable_collections">observable collection</a>, that should be reflected in the type. If the variable is a base class or
+  interface that does not implement the Observable* interface, the variables will <strong>not be</strong> observed!</p>
+
+<p>When there are different layout files for various configurations (e.g.
+landscape or portrait), the variables will be combined. There must not be
+conflicting variable definitions between these layout files.</p>
+
+<p>The generated binding class will have a setter and getter for each of the
+described variables. The variables will take the default Java values until the
+setter is called &mdash; <code>null</code> for reference types, <code>0</code> for <code>int</code>, <code>false</code> for <code>boolean</code>, etc.</p>
+
+<h3 id=custom_binding_class_names>Custom Binding Class Names</h3>
+
+<p>By default, a Binding class is generated based on the name of the layout file,
+starting it with upper-case, removing underscores ( _ ) and capitalizing the
+following letter and then suffixing “Binding”. This class will be placed in a
+databinding package under the module package. For example, the layout file <code>contact_item.xml</code> will generate <code>ContactItemBinding</code>. If the module package is <code>com.example.my.app</code>, then it will be placed in <code>com.example.my.app.databinding</code>.</p>
+
+<p>Binding classes may be renamed or placed in different packages by adjusting the <strong><code>class</code></strong> attribute of the <strong><code>data</code></strong> element. For example:</p>
+<pre class=prettyprint>
+&lt;<strong>data class="ContactItem"</strong>>
+    ...
+&lt;/<strong>data</strong>>
+</pre>
+
+<p>This generates the binding class as <code>ContactItem</code> in the databinding package in the module package. If the class should be
+generated in a different package within the module package, it may be prefixed
+with “.”:</p>
+<pre class=prettyprint>
+&lt;<strong>data class=".ContactItem"</strong>>
+    ...
+&lt;/<strong>data</strong>>
+</pre>
+
+In this case, <code>ContactItem</code> is generated in the module package directly.Any package may be used if the full package is provided:
+<pre class=prettyprint>
+&lt;<strong>data class="com.example.ContactItem"</strong>>
+    ...
+&lt;/<strong>data</strong>>
+</pre>
+
+
+<h3 id=includes>Includes</h3>
+
+<p>Variables may be passed into an included layout&apos;s binding from the containing
+layout by using the application namespace and the variable name in an
+attribute:</p>
+<pre class=prettyprint>
+<em>&lt;?<strong></em>xml version="1.0" encoding="utf-8"<em></strong>?>
+</em>&lt;<strong>layout xmlns:android="http://schemas.android.com/apk/res/android"
+</strong>       <strong> xmlns:bind="http://schemas.android.com/apk/res-auto"</strong>>
+   &lt;<strong>data</strong>>
+       &lt;<strong>variable name="user" type="com.example.User"</strong>/>
+   &lt;/<strong>data</strong>>
+   &lt;<strong>LinearLayout
+       android:orientation="vertical"
+       android:layout_width="match_parent"
+       android:layout_height="match_parent"</strong>>
+       &lt;<strong>include layout="&commat;layout/name"
+           bind:user="&commat;{user}"</strong>/>
+       &lt;<strong>include layout="&commat;layout/contact"
+           bind:user="&commat;{user}"</strong>/>
+   &lt;/<strong>LinearLayout</strong>>
+&lt;/<strong>layout</strong>>
+</pre>
+
+<p>Here, there must be a <code>user</code> variable in both the <code>name.xml </code>and <code>contact.xml </code>layout files.</p>
+<h3 id=expression_language>Expression Language</h3>
+
+
+<h4 id=common_features>Common Features</h4>
+
+<p>The expression language looks a lot like a Java expression. These are the same:</p>
+<ul>
+  <li> Mathematical <strong><code>+ - / * %</code></strong>
+  <li> String concatenation <strong><code>+</code></strong>
+  <li> <code>L</code>ogical <strong><code>&& ||</code></strong>
+  <li> Binary <strong><code>&</code> <code>|</code> <code>^</code></strong>
+  <li> Unary <strong><code>+ - ! ~</code></strong>
+  <li> Shift <strong><code>>> >>> <<</code></strong>
+  <li> Comparison <strong><code>== > < >= <=</code></strong>
+  <li> <strong><code>instanceof</code></strong>
+  <li> Grouping <strong><code>()</code></strong>
+  <li> Literals - character, String, numeric, <strong><code>null</code></strong>
+  <li> Cast
+  <li> Method calls
+  <li> Field access
+  <li> Array access <strong><code>[]</code></strong>
+  <li> Ternary operator <strong><code>?:</code></strong>
+</ul>
+<p>Examples:</p>
+<pre class=prettyprint>
+<strong>android:text="&commat;{String.valueOf(index + 1)}"
+android:visibility="&commat;{age &lt; 13 ? View.GONE : View.VISIBLE}"
+android:transitionName=&apos;&commat;{"image_" + id}&apos;</strong>
+</pre>
+
+
+<h4 id=missing_operations>Missing Operations</h4>
+
+<p>A few operations are missing from the expression syntax that you can use in
+Java.</p>
+<ul>
+  <li> <strong><code>this</code></strong>
+  <li> <strong><code>super</code></strong>
+  <li> <strong><code>new</code></strong>
+  <li> Explicit generic invocation
+</ul>
+
+<h4 id=null_coalescing_operator>Null Coalescing Operator</h4>
+
+<p>The null coalescing operator (<strong><code>??</code></strong>) chooses the left operand if it is not null or the right if it is null.</p>
+<pre class=prettyprint>
+<strong>android:text="&commat;{user.displayName ?? user.lastName}"</strong>
+</pre>
+
+<p>This is functionally equivalent to:</p>
+<pre class=prettyprint>
+<strong>android:text="&commat;{user.displayName != null ? user.displayName : user.lastName}"</strong>
+</pre>
+
+
+<h4 id=property_reference>Property Reference</h4>
+
+<p>The first was already discussed in the <a href="#writing_your_first_data_binding_expressions">Writing your first data binding expressions</a> above: short form JavaBean references. When an expression references a
+property on a class, it uses the same format for fields, getters, and
+ObservableFields.</p>
+<pre class=prettyprint>
+<strong>android:text="&commat;{user.lastName}"</strong>
+</pre>
+
+
+<h4 id=collections>Collections</h4>
+
+<p>Common collections: arrays, lists, sparse lists, and maps, may be accessed
+using the <code>[]</code> operator for convenience.</p>
+<pre class=prettyprint>
+&lt;<strong>data</strong>>
+    &lt;<strong>import type="android.util.SparseArray"</strong>/>
+    &lt;<strong>import type="java.util.Map"</strong>/>
+    &lt;<strong>import type="java.util.List"</strong>/>
+    &lt;<strong>variable name="list" type="List&lt;String&gt;"</strong>/>
+    &lt;<strong>variable name="sparse" type="SparseArray&lt;String&gt;"</strong>/>
+    &lt;<strong>variable name="map" type="Map&lt;String, String&gt;"</strong>/>
+    &lt;<strong>variable name="index" type="int"</strong>/>
+    &lt;<strong>variable name="key" type="String"</strong>/>
+&lt;/<strong>data</strong>>
+…
+<strong>android:text="&commat;{list[index]}"
+</strong>…
+<strong>android:text="&commat;{sparse[index]}"
+</strong>…
+<strong>android:text="&commat;{map[key]}"
+</strong>
+</pre>
+
+
+<h4 id=string_literals>String Literals</h4>
+
+<p>When using single quotes around the attribute value, it is easy to use double
+quotes in the expression:</p>
+<pre class=prettyprint>
+<strong>android:text=&apos;&commat;{map["firstName"]}&apos;</strong>
+</pre>
+
+<p>It is also possible to use double quotes to surround the attribute value. When
+doing so, String literals should either use the &quot; or back quote (`).</p>
+<pre class=prettyprint>
+<strong>android:text="&commat;{map[`firstName`}"
+android:text="&commat;{map[&quot;firstName&quot;]}"</strong>
+</pre>
+
+
+<h4 id=resources>Resources</h4>
+
+<p>It is possible to access resources as part of expressions using the normal
+syntax:</p>
+<pre class=prettyprint>
+<strong>android:padding="&commat;{large? &commat;dimen/largePadding : &commat;dimen/smallPadding}"</strong>
+</pre>
+
+<p>Format strings and plurals may be evaluated by providing parameters:</p>
+<pre class=prettyprint>
+<strong>android:text="&commat;{&commat;string/nameFormat(firstName, lastName)}"
+android:text="&commat;{&commat;plurals/banana(bananaCount)}"</strong>
+</pre>
+
+<p>Some resources require explicit type evaluation.</p>
+
+<table>
+ <tr>
+    <th>Type</th>
+    <th>Normal Reference</th>
+    <th>Expression Reference</th>
+ </tr>
+ <tr>
+    <td>
+<pre class=prettyprint>
+String[]</td>
+    <td>
+&commat;array</td>
+    <td>
+&commat;stringArray</td>
+ </tr>
+ <tr>
+    <td>
+int[]</td>
+    <td>
+&commat;array</td>
+    <td>
+&commat;intArray</td>
+ </tr>
+ <tr>
+    <td>
+TypedArray</td>
+    <td>
+&commat;array</td>
+    <td>
+&commat;typedArray</td>
+ </tr>
+ <tr>
+    <td>
+Animator</td>
+    <td>
+&commat;animator</td>
+    <td>
+&commat;animator</td>
+ </tr>
+ <tr>
+    <td>
+StateListAnimator</td>
+    <td>
+&commat;animator</td>
+    <td>
+&commat;stateListAnimator</td>
+ </tr>
+ <tr>
+    <td>
+</pre>
+
+color <code>int</code></td>
+    <td>
+<pre class=prettyprint>
+&commat;color</td>
+    <td>
+&commat;color</td>
+ </tr>
+ <tr>
+    <td>
+ColorStateList</td>
+    <td>
+&commat;color</td>
+    <td>
+&commat;colorStateList</td>
+ </tr>
+</table>
+
+</pre>
+
+
+<h2 id="data_objects">Data Objects</h2>
+
+
+<p>Any plain old Java object (POJO) may be used for data binding, but modifying a
+POJO will not cause the UI to update. The real power of data binding can be
+used by giving your data objects the ability to notify when data changes. There
+are three different data change notification mechanisms, <code>Observable </code>objects, <code>ObservableField</code>s, and <code>observable collections</code>.</p>
+
+<p>When one of these observable data object is bound to the UI and a property of
+the data object changes, the UI will be updated automatically.</p>
+
+<h3 id=observable_objects>Observable Objects</h3>
+
+
+<p>A class implementing <code>android.databinding.Observable</code> interface will allow the binding to attach a single listener to a bound object
+to listen for changes of all properties on that object.</p>
+
+<p>The <code>Observable</code> interface has a mechanism to add and remove listeners, but notifying is up to
+the developer. To make development easier, a base class, <code>BaseObservable,</code> was created to implement the listener registration mechanism. The data class
+implementer is still responsible for notifying when the properties change. This
+is done by assigning an <code>Bindable </code>annotation to the getter and notifying in the setter.</p>
+
+<pre class=prettyprint>
+<strong>private static class </strong>User <strong>extends </strong>BaseObservable {
+   <strong>private </strong>String <strong>firstName</strong>;
+   <strong>private </strong>String <strong>lastName</strong>;
+   &commat;Bindable
+   <strong>public </strong>String getFirstName() {
+       <strong>return this</strong>.<strong>firstName</strong>;
+   }
+   &commat;Bindable
+   <strong>public </strong>String getFirstName() {
+       <strong>return this</strong>.<strong>lastName</strong>;
+   }
+   <strong>public void </strong>setFirstName(String firstName) {
+       <strong>this</strong>.<strong>firstName </strong>= firstName;
+       notifyPropertyChanged(BR.firstName);
+   }
+   <strong>public void </strong>setLastName(String lastName) {
+       <strong>this</strong>.<strong>lastName </strong>= lastName;
+       notifyPropertyChanged(BR.lastName);
+   }
+}
+</pre>
+
+<p>The <code>Bindable </code>annotation generates an entry in the BR class file during compilation. The BR
+class file will be generated in the module package.If the base class for data classes cannot be changed, the <code>Observable</code> interface may be implemented using the convenient <code>PropertyChangeRegistry</code> to store and notify listeners efficiently.</p>
+
+<h3 id=observablefields>ObservableFields</h3>
+
+<p>A little work is involved in creating Observable classes, so developers who
+want to save time or have few properties may use ObservableFields.
+ObservableFields are self-contained observable objects that have a single
+field. There are versions for all primitive types and one for reference types.
+To use, create a public final field in the data class:</p>
+<pre class=prettyprint>
+<strong>private static class </strong>User <strong>extends </strong>BaseObservable {
+   <strong>public final </strong>ObservableField&lt;String> <strong>firstName </strong>=
+       <strong>new </strong>ObservableField&lt;>();
+   <strong>public final </strong>ObservableField&lt;String> <strong>lastName </strong>=
+       <strong>new </strong>ObservableField&lt;>();
+   <strong>public final </strong>ObservableInt <strong>age </strong>= <strong>new </strong>ObservableInt();
+}
+</pre>
+
+<p>That&apos;s it! To access the value, use the set and get accessor methods:</p>
+<pre class=prettyprint>
+user.<strong>firstName</strong>.set(<strong>"Google"</strong>);
+<strong>int </strong>age = user.<strong>age</strong>.get();
+</pre>
+
+
+<h3 id=observable_collections>Observable Collections</h3>
+
+<p>Some applications use more dynamic structures to hold data. Observable
+  collections allow keyed access to these data objects.ObservableArrayMap is useful when the key is a reference type, such as String.</p>
+
+<pre class=prettyprint>
+ObservableArrayMap&lt;String, Object> user = <strong>new </strong>ObservableArrayMap&lt;>();
+user.put(<strong>"firstName"</strong>, <strong>"Google"</strong>);
+user.put(<strong>"lastName"</strong>, <strong>"Inc."</strong>);
+user.put(<strong>"age"</strong>, 17);
+</pre>
+
+In the layout, the map may be accessed through the String keys:
+<pre class=prettyprint>
+&lt;<strong>data</strong>>
+    &lt;<strong>import type="android.databinding.ObservableMap"</strong>/>
+    &lt;<strong>variable name="user" type="ObservableMap&lt;String, Object>"</strong>/>
+&lt;/<strong>data</strong>>
+…
+&lt;<strong>TextView
+   android:text=&apos;&commat;{user["lastName"]}&apos;
+   android:layout_width="wrap_content"
+   android:layout_height="wrap_content"</strong>/>
+&lt;<strong>TextView
+   android:text=&apos;&commat;{String.valueOf(1 + (Integer)user["age"])}&apos;
+   android:layout_width="wrap_content"
+   android:layout_height="wrap_content"</strong>/>
+</pre>
+
+<p>ObservableArrayList is useful when the key is an integer:</p>
+<pre class=prettyprint>
+ObservableArrayList&lt;Object> user = <strong>new </strong>ObservableArrayList&lt;>();
+user.add(<strong>"Google"</strong>);
+user.add(<strong>"Inc."</strong>);
+user.add(17);
+</pre>
+
+<p>In the layout, the list may be accessed through the indices:</p>
+<pre class=prettyprint>
+&lt;<strong>data</strong>>
+    &lt;<strong>import type="android.databinding.ObservableList"</strong>/>
+    &lt;<strong>import type="com.example.my.app.Fields"</strong>/>
+    &lt;<strong>variable name="user" type="ObservableList&lt;Object>"</strong>/>
+&lt;/<strong>data</strong>>
+…
+&lt;<strong>TextView
+   android:text=&apos;&commat;{user[Fields.LAST_NAME]}&apos;
+   android:layout_width="wrap_content"
+   android:layout_height="wrap_content"</strong>/>
+&lt;<strong>TextView
+   android:text=&apos;&commat;{String.valueOf(1 + (Integer)user[Fields.AGE])}&apos;
+   android:layout_width="wrap_content"
+   android:layout_height="wrap_content"</strong>/>
+</pre>
+
+
+<h2 id=generated_binding>Generated Binding</h2>
+
+<p>The generated binding class links the layout variables with the Views within
+the layout. As discussed earlier, the name and package of the Binding may be <a href="#custom_binding_class_names">customized</a>. The Generated binding classes all extend <code>android.databinding.ViewDataBinding</code>.</p>
+<h3 id=creating>Creating</h3>
+
+<p>The binding should be created soon after inflation to ensure that the View
+hierarchy is not disturbed prior to binding to the Views with expressions
+within the layout. There are a few ways to bind to a layout. The most common is
+to use the static methods on the Binding class.The inflate method inflates the View hierarchy and binds to it all it one step.
+There are versions that attach the View to its parent and that inflate without
+attaching.</p>
+<pre class=prettyprint>
+MyLayoutBinding binding = MyLayoutBinding.<em>inflate</em>(<strong>this</strong>);
+MyLayoutBinding binding = MyLayoutBinding.<em>inflate</em>(viewGroup);
+</pre>
+
+<p>If the layout was inflated using a different mechanism, it may be bound
+separately:</p>
+<pre class=prettyprint>
+MyLayoutBinding binding = MyLayoutBinding.<em>bind</em>(viewRoot);
+</pre>
+
+<p>Sometimes the binding cannot be known in advance. In such cases, the binding
+can be created using the DataBindingUtil class:</p>
+<pre class=prettyprint>
+ViewDataBinding binding = DataBindingUtil.<em>inflate</em>(context, layoutId,
+    parent, attachToParent);
+ViewDataBinding binding = DataBindingUtil.<em>bindTo</em>(viewRoot, layoutId);
+</pre>
+
+
+<h3 id=views_with_ids>Views With IDs</h3>
+
+<p>A public final field will be generated for each View with an ID in the layout.
+The binding does a single pass on the View hierarchy, extracting the Views with
+IDs. This mechanism can be faster than calling findViewById for several Views. For example:</p>
+<pre class=prettyprint>
+&lt;<strong>layout xmlns:android="http://schemas.android.com/apk/res/android"</strong>>
+   &lt;<strong>data</strong>>
+       &lt;<strong>variable name="user" type="com.example.User"</strong>/>
+   &lt;/<strong>data</strong>>
+   &lt;<strong>LinearLayout
+       android:orientation="vertical"
+       android:layout_width="match_parent"
+       android:layout_height="match_parent"</strong>>
+       &lt;<strong>TextView android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:text="&commat;{user.firstName}"
+</strong>           <strong>android:id="&commat;+id/firstName"</strong>/>
+       &lt;<strong>TextView android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:text="&commat;{user.lastName}"</strong>           <strong>android:id="&commat;+id/lastName"</strong>/>
+   &lt;/<strong>LinearLayout</strong>>
+&lt;/<strong>layout</strong>>
+</pre>
+
+Will generate a binding class with:
+<pre class=prettyprint>
+<strong>public final </strong>TextView <strong>firstName</strong>;
+<strong>public final </strong>TextView <strong>lastName</strong>;
+</pre>
+
+<p>IDs are not nearly as necessary as without data binding, but there are still
+some instances where access to Views are still necessary from code.</p>
+<h3 id=variables>Variables</h3>
+
+<p>Each variable will be given a accessor methods.</p>
+<pre class=prettyprint>
+&lt;<strong>data</strong>>
+    &lt;<strong>import type="android.graphics.drawable.Drawable"</strong>/>
+    &lt;<strong>variable name="user"  type="com.example.User"</strong>/>
+    &lt;<strong>variable name="image" type="Drawable"</strong>/>
+    &lt;<strong>variable name="note"  type="String"</strong>/>
+&lt;/<strong>data</strong>>
+</pre>
+
+<p>will generate setters and getters in the binding:</p>
+<pre class=prettyprint>
+<strong>public abstract </strong>com.example.User getUser();
+<strong>public abstract void </strong>setUser(com.example.User user);
+<strong>public abstract </strong>Drawable getImage();
+<strong>public abstract void </strong>setImage(Drawable image);
+<strong>public abstract </strong>String getNote();
+<strong>public abstract void </strong>setNote(String note);
+</pre>
+
+
+<h3 id=viewstubs>ViewStubs</h3>
+
+<p>ViewStubs are a little different from normal Views. They start off invisible
+and when they either are made visible or are explicitly told to inflate, they
+replace themselves in the layout by inflating another layout.</p>
+
+<p>Because the ViewStub essentially disappears from the View hierarchy, the View
+in the binding object must also disappear to allow collection. Because the
+Views are final, a ViewStubProxy object takes the place of the ViewStub, giving
+the developer access to the ViewStub when it exists and also access to the
+inflated View hierarchy when the ViewStub has been inflated.</p>
+
+<p>When inflating another layout, a binding must be established for the new
+layout. Therefore, the ViewStubProxy must listen to the ViewStub&apos;s
+OnInflateListener and establish the binding at that time. Since only one can
+exist, the ViewStubProxy allows the developer to set an OnInflateListener on it
+that it will call after establishing the binding.</p>
+
+<h3 id=advanced_binding>Advanced Binding</h3>
+
+
+<h4 id=dynamic_variables>Dynamic Variables</h4>
+
+<p>At times, the specific binding class won&apos;t be known. For example, a
+RecyclerView Adapter operating against arbitrary layouts won&apos;t know the
+specific binding class. It still must assign the binding value during the
+onBindViewHolder.</p>
+
+<p>In this example, all layouts that the RecyclerView binds to have an "item"
+variable. The BindingHolder has a getBinding method returning the <code>ViewDataBinding</code> base.</p>
+<pre class=prettyprint>
+<strong>public void </strong>onBindViewHolder(BindingHolder holder, <strong>int </strong>position) {
+   <strong>final </strong>T item = <strong>mItems</strong>.get(position);
+   holder.getBinding().setVariable(BR.item, item);
+   holder.getBinding().executePendingBindings();
+}
+</pre>
+
+
+<h4 id=immediate_binding>Immediate Binding</h4>
+
+<p>When a variable or observable changes, the binding will be scheduled to change
+before the next frame. There are times, however, when binding must be executed
+immediately. To force execution, use the executePendingBindings() method.</p>
+<h2 id=attribute_setters>Attribute Setters</h2>
+
+<p>Whenever a bound value changes, the generated binding class must call a setter
+method on the View with the binding expression. The data binding framework has
+ways to customize which method to call to set the value.</p>
+<h3 id=automatic_setters>Automatic Setters</h3>
+
+For an attribute, data binding tries to find the method setAttribute. The
+namespace for the attribute does not matter, only the attribute name itself.
+
+<p>For example, an expression associated with TextView&apos;s attribute <strong><code>android:text</code></strong> will look for a setText(String). If the expression returns an int, data
+binding will search for a setText(int) method. Be careful to have the
+expression return the correct type, casting if necessary.Note that data binding will work even if no attribute exists with the given
+name. You can then easily "create" attributes for any setter by using data
+binding. For example, support DrawerLayout doesn&apos;t have any attributes, but
+plenty of setters. You can use the automatic setters to use one of these.</p>
+<pre class=prettyprint>
+&lt;android.support.v4.widget.<strong>DrawerLayout
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    app:scrimColor="&commat;{&commat;color/scrim}"
+    app:drawerListener="&commat;{fragment.drawerListener}"/></strong>
+</pre>
+
+
+<h3 id=renamed_setters>Renamed Setters</h3>
+
+<p>Some attributes have setters that don&apos;t match by name. For these methods, an
+attribute may be associated with the setter through BindingMethods annotation.
+This must be associated with a class and contains BindingMethod annotations,
+one for each renamed method. For example, the <strong><code>android:tint</code></strong> attribute is really associated with setImageTintList, not setTint.</p>
+<pre class=prettyprint>
+&commat;BindingMethods({
+       &commat;BindingMethod(type = <strong>"android.widget.ImageView"</strong>,
+                      attribute = <strong>"android:tint"</strong>,
+                      method = <strong>"setImageTintList"</strong>),
+})
+</pre>
+
+<p>It is unlikely that developers will need to rename setters; the android
+framework attributes have already been implemented.</p>
+<h3 id=custom_setters>Custom Setters</h3>
+
+<p>Some attributes need custom binding logic. For example, there is no associated
+setter for the <strong><code>android:paddingLeft</code></strong> attribute. Instead, setPadding(left, top, right, bottom) exists. A static
+binding adapter method with the BindingAdapter annotation allows the developer
+to customize how a setter for an attribute is called.</p>
+
+<p>The android attributes have already had BindingAdapters created. For example,
+here is the one for paddingLeft:</p>
+<pre class=prettyprint></p>
+&commat;BindingAdapter(<strong>"android:paddingLeft"</strong>)
+<strong>public static void </strong>setPaddingLeft(View view, <strong>int </strong>padding) {
+   view.setPadding(padding,
+                   view.getPaddingTop(),
+                   view.getPaddingRight(),
+                   view.getPaddingBottom());
+}
+</pre>
+
+<p>Binding adapters are useful for other types of customization. For example, a
+  custom loader can be called off-thread to load an image.</p>
+
+<p>Developer-created binding adapters will override the data binding default
+adapters when there is a conflict.</p>
+
+<p>You can also have adapters that receive multiple parameters. </p>
+<pre class=prettyprint>
+&commat;BindingAdapter(attributes = {<strong>"bind:imageUrl"</strong>, <strong>"bind:error"</strong>})
+<strong>public static void </strong>loadImage(ImageView view, String url, Drawable error) {
+   Picasso.<em>with</em>(view.getContext()).load(url).error(error).into(view);
+}
+</pre>
+
+<p>This adapter will be called if both <strong>imageUrl </strong>and <strong>error </strong>are used for an ImageView and <em>imageUrl </em>is a string and <em>error</em> is a drawable.</p>
+<ul>
+  <li> Custom namespaces are ignore during matching.
+  <li> You can also write adapters for android namespace.
+</ul>
+
+<pre class=prettyprint>
+&lt;ImageView app:imageUrl=“&commat;{venue.imageUrl}”
+app:error=“&commat;{&commat;drawable/venueError}”/>
+</pre>
+
+
+<h2 id=converters>Converters</h2>
+
+
+<h3 id=object_conversions>Object Conversions</h3>
+
+<p>When an Object is returned from a binding expression, a setter will be chosen
+from the automatic, renamed, and custom setters. The Object will be cast to a
+parameter type of the chosen setter.</p><p>This is a convenience for those using ObservableMaps to hold data. for example:</p>
+<pre class=prettyprint>
+&lt;<strong>TextView
+   android:text=&apos;&commat;{userMap["lastName"]}&apos;
+   android:layout_width="wrap_content"
+   android:layout_height="wrap_content"</strong>/>
+</pre>
+
+<p>The userMap returns an Object and that Object will be automatically cast to
+parameter type found in the setter <code>setText(CharSequence)</code>. When there may be confusion about the parameter type, the developer will need
+to cast in the expression.</p>
+<h3 id=custom_conversions>Custom Conversions</h3>
+
+<p>Sometimes conversions should be automatic between specific types. For example,
+when setting the background:</p>
+<pre class=prettyprint>
+&lt;<strong>View
+   android:background="&commat;{isError ? &commat;color/red : &commat;color/white}"
+   android:layout_width="wrap_content"
+   android:layout_height="wrap_content"</strong>/>
+</pre>
+
+<p>Here, the background takes a <code>Drawable</code>, but the color is an integer. Whenever a <code>Drawable</code> is expected and an integer is returned, the <code>int</code> should be converted to a <code>ColorDrawable</code>. This conversion is done using a static method with a BindingConversion
+annotation:</p>
+<pre class=prettyprint>
+&commat;BindingConversion
+<strong>public static </strong>ColorDrawable convertColorToDrawable(<strong>int </strong>color) {
+   <strong>return new </strong>ColorDrawable(color);
+}
+</pre>
+
+<p>Note that conversions only happen at the setter level, so it is <strong>not allowed </strong>to mix types like this:</p>
+<pre class=prettyprint>
+&lt;<strong>View
+   android:background="&commat;{isError ? &commat;drawable/error : &commat;color/white}"
+   android:layout_width="wrap_content"
+   android:layout_height="wrap_content"</strong>/>
+</pre>
+
diff --git a/docs/html/preview/license.html b/docs/html/preview/download.jd
similarity index 70%
copy from docs/html/preview/license.html
copy to docs/html/preview/download.jd
index deb16aa..4341f8d 100644
--- a/docs/html/preview/license.html
+++ b/docs/html/preview/download.jd
@@ -1,105 +1,20 @@
-<!DOCTYPE html>
+page.title=Download
+page.image=images/cards/card-download_16-9_2x.png
 
-<html>
-<head>
+@jd:body
 
+<div style="position:relative; min-height:600px">
 
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="viewport" content="width=970" />
+  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
 
-<meta name="Description" content="To get started with the Android SDK Preview, you must agree to the following terms and conditions. As described below, please note that this is a preview version of the Android SDK, subject to change, that you use at your own risk.">
-<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
-<title>License Agreement | Android Developers</title>
+    <p class="sdk-terms-intro">Before downloading and installing components of the Android Preview
+      SDK, you must agree to the following terms and conditions.</p>
 
-<!-- STYLESHEETS -->
-<link rel="stylesheet"
-href="//fonts.googleapis.com/css?family=Roboto+Condensed">
-<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
-  title="roboto">
-<link href="/assets/css/default.css" rel="stylesheet" type="text/css">
+    <h2 class="norule">Terms and Conditions</h2>
 
-
-
-<!-- JAVASCRIPT -->
-<script src="//www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
-<script type="text/javascript">
-  var toRoot = "/";
-  var metaTags = [];
-  var devsite = false;
-</script>
-<script src="/assets/js/docs.js" type="text/javascript"></script>
-
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-
-  ga('create', 'UA-5831155-1', 'android.com');
-  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
-  ga('send', 'pageview');
-  ga('universal.send', 'pageview'); // Send page view for new tracker.
-</script>
-
-</head>
-
-
-<body class="gc-documentation" itemscope="" itemtype="http://schema.org/Article">
-
-
-<a name="top"></a>
-<div id="body-content">
-<div class="fullpage">
-<div id="jd-content">
-  <div class="jd-descr" itemprop="articleBody">
-<style>
-body,html, #qv {background-color:#e9e9e9}
-
-#qv * { font-weight:bold;}
-
-.fullpage>#footer,
-#jd-content>.content-footer.wrap {
-  display:none;
-}
-
-.content-footer {
-  display: none;
-}
-</style>
-
- <div style="border-bottom: 1px solid #a5c43a; position: absolute; left: 0; right: 0; top: 0;">
-      <div class="wrap" style="position: relative; height: 45px; padding: 0 20px;">
-        <a href="/index.html" style="position:absolute;top:8px">
-          <img src="/assets/images/dac_logo.png" srcset="/assets/images/dac_logo@2x.png 2x" width="123" height="25" alt="Android Developers home page">
-        </a>
-      </div>
-    </div>
-   
-    <div class="landing-rest-of-page">
-            <div class="landing-section" style="padding:55px 10px 0">
-
-<div class="wrap">
-
-<div class="col-16" id="doc-col" >
-
-        <h1 itemprop="name" >L Developer Preview License Agreement</h1>
-
-<div class="jd-descr" itemprop="articleBody">
-    <p>
-If you are using the Android SDK
-Preview, you must agree to the following terms
-and conditions. As described below, please note that the preview version of the
-Android SDK is subject to change, and that you use it at your own risk.  The
-Android SDK Preview is not a stable release, and may contain errors and defects
-that can result in serious damage to your computer systems, devices and data.
-</p>
-
-<p>
+    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
 This is the Android SDK Preview License Agreement (the “License Agreement”).
-</p>
 
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:940px">
 1. Introduction
 
 1.1 The Android SDK Preview (referred to in the License Agreement as the “Preview” and specifically including the Android system files, packaged APIs, and Preview library files, if and when they are made available) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the Preview.
@@ -140,7 +55,7 @@
 
 4.1 Google agrees that nothing in the License Agreement gives Google any right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the Preview, including any intellectual property rights that subsist in those applications.
 
-4.2 You agree to use the Preview and write applications only for purposes that are permitted by (a) the License Agreement, and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries). 
+4.2 You agree to use the Preview and write applications only for purposes that are permitted by (a) the License Agreement, and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
 
 4.3 You agree that if you use the Preview to develop applications, you will protect the privacy and legal rights of users. If users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If users provide you with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, each user has given you permission to do so.
 
@@ -227,48 +142,211 @@
 14.6 The License Agreement may not be assigned or transferred by you without the prior written approval of Google, and any attempted assignment without such approval will be void. You shall not delegate your responsibilities or obligations under the License Agreement without the prior written approval of Google.
 
 14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+  </div><!-- sdk terms -->
 
 
-</div>
-    </div>
-  </div>
 
-</div>
-  </div> <!-- end landing-body-content -->
-
+    <div id="sdk-terms-form">
+      <p>
+        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+        <label id="agreeLabel" for="agree">I have read and agree with the above terms and conditions</label>
+      </p>
+      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
     </div>
 
-      <div class="content-footer wrap" itemscope=""
-        itemtype="http://schema.org/SiteNavigationElement">
 
-        <div class="paging-links layout-content-col col-10">
-
-        </div>
-
-      </div>
+  </div><!-- end TOS -->
 
 
+  <div id="landing">
 
-
-  </div> <!-- end jd-content -->
-
-<div id="footer" class="wrap" style="width:940px">
-
-
-  <div id="copyright">
-
-  Except as noted, this content is
-  licensed under <a href="http://creativecommons.org/licenses/by/2.5/">
-  Creative Commons Attribution 2.5</a>. For details and
-  restrictions, see the <a href="https://developer.android.com/license.html">Content
-  License</a>.
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+      <ol>
+        <li><a href="#sdk">Preview SDK</a></li>
+        <li><a href="#docs">Developer Documentation</a></li>
+        <li><a href="#images">Hardware System Images</a></li>
+      </ol>
   </div>
+</div>
 
 
-</div> <!-- end footer -->
-</div><!-- end doc-content -->
+<p>
+  The Android M Preview SDK includes development tools, Android system files, and library files to
+  help you test your app and the new APIs coming in the next release of the platform. This document
+  describes how to get the downloadable components of the preview for testing your app.
+</p>
 
-</div> <!-- end body-content -->
 
-</body>
-</html>
+<h2 id="sdk">Preview SDK</h2>
+
+<p>
+  The Preview SDK is available for download through the <a href=
+  "{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>. For more information on
+  downloading and configuring the Preview SDK, see <a href=
+  "{@docRoot}preview/setup-sdk.html#downloadSdk">Set Up the Preview SDK</a>.
+</p>
+
+
+<h2 id="#docs">Developer Documentation</h2>
+
+<p>
+  The developer documentation download package provides detailed API reference information and an API difference report for the preview.
+</p>
+
+<table>
+  <tr>
+    <th scope="col">Description</th>
+    <th scope="col">Download / Checksums</th>
+  </tr>
+  <tr id="docs-dl">
+    <td>Android M Preview<br>Developer Docs</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >m-preview-devdocs-r1.zip</a><br>
+      MD5: 5a6ae77217978cb7b958a240c2e80b57<br>
+      SHA-1: ac1d8a8e4f4a1dca5864dc733caa940bffc28616
+    </td>
+  </tr>
+<table>
+
+
+<h2 id="images">Hardware System Images</h2>
+
+<p>
+  These system images allow you install a preview version of the platform on a physical device for
+  testing. By configuring a device with one of these images, you can install and test your app to
+  see how it performs on the next version of the platform. The process of installing a system image
+  on a device <em>removes all data from the device</em>, so you should backup your data before
+  installing a system image.
+</p>
+
+<p class="warning">
+  <b>Warning:</b> The following Android system images are previews and are subject to change. Your
+  use of these system images is governed by the Android SDK Preview License Agreement. The Android
+  preview system images are not stable releases, and may contain errors and defects that can result
+  in damage to your computer systems, devices, and data. The preview Android system images are not
+  subject to the same testing as the factory OS and can cause your phone and installed services and
+  applications to stop working.
+</p>
+
+<table>
+  <tr>
+    <th scope="col">Device</th>
+    <th scope="col">Download / Checksums</th>
+  </tr>
+  <tr id="hammerhead">
+    <td>Nexus 5 (GSM/LTE) <br>"hammerhead"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >hammerhead-mpv79-preview-ac1d8a8e.tgz</a><br>
+      MD5: 5a6ae77217978cb7b958a240c2e80b57<br>
+      SHA-1: ac1d8a8e4f4a1dca5864dc733caa940bffc28616
+    </td>
+  </tr>
+  <tr id="shamu">
+    <td>Nexus 6 <br>"shamu"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >shamu-mpv79-preview-ac1d8a8e.tgz</a><br>
+      MD5: 5a6ae77217978cb7b958a240c2e80b57<br>
+      SHA-1: ac1d8a8e4f4a1dca5864dc733caa940bffc28616
+    </td>
+  </tr>
+  <tr id="volantis">
+    <td>Nexus 9 <br>"volantis"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantis-mpv79-preview-ac1d8a8e.tgz</a><br>
+      MD5: 5a6ae77217978cb7b958a240c2e80b57<br>
+      SHA-1: ac1d8a8e4f4a1dca5864dc733caa940bffc28616
+    </td>
+  </tr>
+  <tr id="fugu">
+    <td>Nexus Player <br>"fugu"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >fugu-mpv79-preview-d0ddf8ce.tgz</a><br>
+      MD5: b293a5d3a4e07beabebcc0be85ad68a2<br>
+      SHA-1: d0ddf8ce733ba2a34279cdff8827fd604762c2342d
+    </td>
+  </tr>
+</table>
+
+<h3 id="install-image">Install an Image to a Device</h3>
+
+<p>
+  In order to use a device image for testing, you must install it on a compatible device. Follow
+  the instructions below to install a system image:
+</p>
+
+<ol>
+  <li>Download and uncompress one of the system image packages listed here.</li>
+  <li>Backup any data you want to preserve from the device.</li>
+  <li>Follow the instructions at
+  <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
+  to flash the image onto your device.</li>
+</ol>
+
+<p class="note">
+  <strong>Note:</strong> Once you have flashed a development device the preview system image,
+  it is upgraded automatically with the next preview release through over-the-air (OTA) updates.
+</p>
+
+<h3 id="revertDevice">Revert a Device to Factory Specifications</h3>
+
+<p>
+  If you want to uninstall the Preview and revert the device to factory specifications, go to
+  <a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a> and
+  download the image you want to flash to for your device. Follow the instructions on that page to
+  flash the image to your device.
+</p>
+
+  </div><!-- landing -->
+
+</div><!-- relative wrapper -->
+
+
+
+<script>
+  var urlRoot = "http://storage.googleapis.com/androiddevelopers/preview/";
+  function onDownload(link) {
+
+    $("#downloadForRealz").html("Download " + $(link).text());
+    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
+
+    $("#tos").fadeIn('fast');
+    $("#landing").fadeOut('fast');
+
+    return true;
+  }
+
+
+  function onAgreeChecked() {
+    /* verify that the TOS is agreed */
+    if ($("input#agree").is(":checked")) {
+      /* reveal the download button */
+      $("a#downloadForRealz").removeClass('disabled');
+    } else {
+      $("a#downloadForRealz").addClass('disabled');
+    }
+  }
+
+  function onDownloadForRealz(link) {
+    if ($("input#agree").is(':checked')) {
+      $("#tos").fadeOut('fast');
+      $("#landing").fadeIn('fast');
+      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
+      location.hash = "";
+      return true;
+    } else {
+      $("label#agreeLabel").parent().stop().animate({color: "#258AAF"}, 200,
+        function() {$("label#agreeLabel").parent().stop().animate({color: "#222"}, 200)}
+      );
+      return false;
+    }
+  }
+
+  $(window).hashchange( function(){
+    if (location.hash == "") {
+      location.reload();
+    }
+  });
+
+</script>
diff --git a/docs/html/preview/features/runtime-permissions.jd b/docs/html/preview/features/runtime-permissions.jd
new file mode 100644
index 0000000..4a01010
--- /dev/null
+++ b/docs/html/preview/features/runtime-permissions.jd
@@ -0,0 +1,352 @@
+page.title=Android M Preview Runtime Permissions
+
+@jd:body
+
+
+<p>
+  The M Developer Preview introduces a new app permissions model which makes it
+  less frustrating for users to install and upgrade apps. If an app running on
+  M supports the new permissions model, the user does not have to grant any
+  permissions when they install or upgrade the app. Instead, the app requests
+  permissions as they are needed, and the system shows a dialog to the user
+  asking for the permission.
+</p>
+
+<p>
+  If an app supports the new permissions model, it can still be installed and
+  run on devices running older versions of Android, using the old permissions
+  model on those devices.
+</p>
+
+<h2>
+  Overview
+</h2>
+
+<p>
+  If an app's target SDK version is the M developer preview, that indicates
+  that the app uses the new permissions model:
+</p>
+
+<ul>
+  <li>Permissions are divided into <em>permission groups</em>, based on their
+  functionality. For example, all permissions relating to the camera and photo
+  roll are grouped in the Camera permission group,
+  [link]android.permission-group.CAMERA[/link].
+  </li>
+
+  <li>The app declares all the permissions it needs in the manifest, as in
+  earlier Android platforms.
+  </li>
+
+  <li>When the user installs or updates the app, the app is granted just those
+  permissions it requests that fall under <a href=
+  "https://android-preview.googleplex.com/reference/android/content/pm/PermissionInfo.html#PROTECTION_NORMAL">
+    <code>PROTECTION_NORMAL</code></a>, as well as signature and system permissions, as
+    described below. The user is <em>not</em> prompted to grant any permissions
+    at this time.
+  </li>
+
+  <li>When the app needs to perform any action that requires a permission, it
+  first checks whether it has that permission already. If it does not, it
+  requests to be granted that permission.
+  </li>
+
+  <li>When the app requests a permission, the system shows a dialog box to the
+  user, then calls the app's callback function to notify it whether the
+  permission was granted. If a user grants a permission, the app is given all
+  permissions in that permission's functional area that were declared in the
+  app manifest.
+  </li>
+
+  <li>If the app is not granted an appropriate permission, it should handle the
+  failure cleanly. For example, if the permission is just needed for an added
+  feature, the app can disable that feature. If the permission is essential for
+  the app to function, the app might disable all its functionality and inform
+  the user that they need to grant that permission.
+  </li>
+
+  <li>Users can always go to the app's <b>Settings</b> screen and turn on or
+  off any of the app's permissions.
+  <!-- insert screenshot of settings screen-->
+  If a user turns off an app's permissions, the app is
+  <em>not</em> notified.
+  </li>
+</ul>
+
+<h3>
+  System Apps and Signature Permissions
+</h3>
+
+<p>
+  Ordinarily, an app is just granted the <a href=
+  "https://android-preview.googleplex.com/reference/android/content/pm/PermissionInfo.html#PROTECTION_NORMAL">
+  <code>PROTECTION_NORMAL</code></a> permissions when it is installed. However,
+  under some circumstances the app is granted more permissions:
+</p>
+
+<ul>
+  <li>If an app is part of the system image, it is automatically granted all
+  the permissions listed in its manifest.
+  </li>
+
+  <li>Apps are granted all permissions listed in the manifest that fall under
+  <a href=
+  "https://android-preview.googleplex.com/reference/android/content/pm/PermissionInfo.html#PROTECTION_SIGNATURE">
+    PROTECTION_SIGNATURE</a>, if the app's signature matches the signature of
+    the app that declares the permissions.
+  </li>
+</ul>
+
+<p>
+  In both cases, the user can still revoke permissions at any time by going to
+  the app's <b>Settings</b> screen, so the app should continue to check for
+  permissions at run time and request them if necessary.
+</p>
+
+<h3>
+  Forwards and Backwards Compatibility
+</h3>
+
+<p>
+  If an app does not target the M developer preview, it continues to use the
+  old permissions model even on M devices. When the app is installed, the
+  system asks the user to grant all permissions listed in the app's manifest.
+</p>
+
+<p>
+  If an app using the new permissions model is run on a pre-M device, the
+  system treats it the same as any other app. Once again, the system asks the
+  user to grant all declared permissions at install time.
+</p>
+
+<h2 id="">Coding for Runtime Permissions</h2>
+
+<p>
+  If your app targets the new M Developer Preview, you must use the new
+  permissions model. This means that in addition to declaring your needed
+  permissions in the manifest, you must also check to see if you have the
+  permissions at run time, and request the permissions if you do not already
+  have them.
+</p>
+
+<h3>
+  Enabling the New Permissions Model
+</h3>
+
+<p>
+  To enable the new M Developer Preview permissions model, set the app's
+  <a href=
+  "http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#target">
+  targetSdkVersion</a> attribute to "M". Doing this enables all the new
+  permissions features.
+</p>
+
+<!-- TODO: Insert manifest snippet -->
+
+<h3>
+  Designating a Permission for M Only
+</h3>
+
+<p>
+  You can use the new <code>&lt;uses-permission-sdk-m&gt;</code> element in the
+  app manifest to indicate that a permission is only needed on the M platform.
+  If you declare a permission this way, then whenever the app is installed on
+  an older device, the user is not prompted to grant the permission and the
+  permission is not granted to the app. This allows you to add new permissions
+  to updated versions of your app without forcing users to grant permissions
+  when they install the update.
+</p>
+
+<p>
+  If the app is running on a device with the M developer preview,
+  <code>&lt;uses-permission-sdk-m&gt;</code> behaves the same as
+  <code>&lt;uses-permission&gt;</code>. The user is not prompted to grant any
+  permissions when the app is installed, and the app requests permissions as
+  they are needed.
+</p>
+
+<h3 id="prompting">
+  Prompting for Permissions on the M Preview
+</h3>
+
+<p>
+  If your app uses the new M Developer Preview permissions model, the user is
+  not asked to grant all permissions when the app is first launched on a device
+  running the M Preview. Instead, your app requests permissions as they are
+  needed. When your app requests a permission, the system shows a dialog to the
+  user.
+</p>
+
+<p>
+  An app should follow this workflow to request permissions on an Android M
+  device. The device can check what platform it's running on by checking the
+  value of {@link android.os.Build.VERSION#SDK_INT Build.VERSION.SDK_INT}. If
+  the device is running the M Developer Preview, {@link
+  android.os.Build.VERSION#SDK_INT SDK_INT} is 23.
+  <!-- TODO: Confirm this number -->
+</p>
+<ol>
+  <li>When the user tries to do something that requires a permission, the app
+  checks to see if it currently has permission to perform this operation. To do
+  this, the app calls
+   <a href="https://android-preview.googleplex.com/reference/android/content/Context.html#checkSelfPermission(java.lang.String)"><code>Context.CheckSelfPermission(<em>permission_name</em>)</code></a> . The
+  app should do this even if it knows the user has already granted that
+  permission, since the user can revoke an app's permissions at any time. For
+  example, if a user wants to use an app to take a picture, the app calls
+  <a href="https://android-preview.googleplex.com/reference/android/content/Context.html#checkSelfPermission(java.lang.String)"><code>Context.CheckSelfPermission(Manifest.permission.CAMERA)</code></a>.
+  </li>
+
+<!-- TODO: Full list of permissions (or link to that list),
+  and how they break down by functional area]-->
+
+  <li>If the permission is not already granted to the app, the app calls
+  <a href=
+  "https://android-preview.googleplex.com/reference/android/app/Activity.html#requestPermissions(java.lang.String[],%20int)">
+    <code>requestPermissions()</code></a> to request the
+    appropriate permission or permissions. This method functions
+    asynchronously.
+    <!-- TODO: insert code snippet showing permission check and request -->
+  </li>
+
+  <li>The system presents a dialog box to the user.
+  <!-- TODO: insert screenshot of permissions dialog box -->
+    When the user responds, the system calls <a href=
+    "https://android-preview.googleplex.com/reference/android/app/Activity.html#onRequestPermissionsResult(int,%20java.lang.String[],%20int[])">
+    <code>Activity.onRequestPermissionsResult()</code></a> with the
+    results; your app needs to override that method. The callback is passed the
+    same request code you passed to <a href=
+    "https://android-preview.googleplex.com/reference/android/app/Activity.html#requestPermissions(java.lang.String[],%20int)">
+    <code>requestPermissions()</code></a>.
+    <!-- TODO: Insert code snippet of callback method -->
+  </li>
+
+  <li>If the user grants a permission, the app is given all permissions
+  in that functional area that are listed in the app manifest.
+  If the request is denied, you should take appropriate action. For
+  example, you might disable any menu actions that depend on this permission.
+  </li>
+</ul>
+
+<p>
+  When the system asks the user to grant a permission, the user has the option
+  of telling the system not to ask for that permission again. In that case,
+  when an app asks for that permission with <a href=
+    "https://android-preview.googleplex.com/reference/android/app/Activity.html#requestPermissions(java.lang.String[],%20int)">
+    <code>requestPermissions()</code></a>, the
+  system immediately denies the request. For this reason, your app cannot
+  assume that any direct interaction with the user has taken place.
+</p>
+
+<p>
+  If your app runs on a device that has SDK 22 or lower, the app uses the old
+  permissions model. When the user installs the app, they are prompted to grant
+  all the permissions your app requests in its manifest, except for those
+  permissions which are labeled with <code>&lt;uses-permission-sdk-m&gt;</code>.
+</p>
+
+<h2 id="">Best Practices</h2>
+
+<p>
+  The new permissions model gives users a smoother experience, and makes it
+  easier for them to install apps and feel comfortable with what the apps are
+  doing. We recommend the following best practices to take full advantage of
+  the new model.
+</p>
+
+<h3>
+  Don't Overwhelm the User
+</h3>
+
+<p>
+  If you confront the user with a lot of permissions requests at once, you may
+  overwhelm the user and cause them to quit your app. Instead, you should ask
+  for permissions as you need them.
+</p>
+
+<p>
+  In some cases, one or more permissions might be absolutely essential to your
+  app. In that case, it might make sense to ask for all the permissions as soon
+  as the app launches.
+  <!-- TODO: insert screenshot of dialog box asking for several permissions -->
+  For example, if you make a photography app, the app would
+  need access to the device camera. When the user launches the app for the
+  first time, they won't be surprised to be asked to give permission to use the
+  camera. But if the same app also had a feature to share photos with the
+  user's contacts, you probably should <em>not</em> ask for that permission at
+  first launch. Instead, wait until the user tries to use the "sharing" feature
+  and ask for the permission then.
+</p>
+
+<p>
+  If your app provides a tutorial, it may make sense to request app's essential
+  permissions at the end of the tutorial sequence.
+</p>
+
+<h3>
+  Explain Why You Need Permissions
+</h3>
+
+<p>
+  The permissions screen shown by the system when you call <a href=
+  "https://android-preview.googleplex.com/reference/android/app/Activity.html#requestPermissions(java.lang.String[],%20int)">
+  <code>requestPermissions()</code></a> says what permission your app wants,
+  but doesn't say why you want it. In some cases, the user may find that
+  puzzling. It's a good idea to explain to the user why your app wants the
+  permissions before you call <a href=
+  "https://android-preview.googleplex.com/reference/android/app/Activity.html#requestPermissions(java.lang.String[],%20int)">
+  <code>requestPermissions()</code></a>.
+</p>
+
+<p>
+  For example, a photography app might want to use location services, so it can
+  geotag the photos. A typical user might not understand that a photo can
+  contain location information, and would be puzzled why their photography app
+  wanted to know the location. So in this case, it's a good idea for the app to
+  tell the user about this feature <em>before</em> calling
+  <a href=
+  "https://android-preview.googleplex.com/reference/android/app/Activity.html#requestPermissions(java.lang.String[],%20int)">
+  <code>requestPermissions()</code></a>.
+</p>
+
+<p>
+  As noted, one way to do this is to incorporate these requests into an app
+  tutorial. The tutorial can show each of the app's features in turn, and as it
+  does this, it can explain what permissions are needed. For example, the
+  photography app's tutorial demonstrate its "share photos with your contacts"
+  feature, then tell the user that they'll need to give permission for the app
+  to see the user's contacts, and <em>then</em> call <a href=
+  "https://android-preview.googleplex.com/reference/android/app/Activity.html#requestPermissions(java.lang.String[],%20int)">
+  <code>requestPermissions()</code></a>
+  to get that access. Of course, some users will want to skip the tutorial, so
+  you'll still need to check for and request permissions during the app's
+  normal operation.
+</p>
+
+<h3>
+  Opt Out If Necessary
+</h3>
+
+<p>
+  Until you are ready to use the new permissions model, you can opt out simply
+  by setting your app's <a href=
+  "http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#target">
+  targetSdkVersion</a> to 22 or less. If you do this, the system will use the
+  old permissions model. When the user downloads the app, they will be prompted
+  to grant all the permissions listed in the manifest.
+</p>
+
+<p>
+  With the M Developer Preview, users can turn off permissions for <em>any</em>
+  app from the app's Settings page, regardless of what SDK version the app
+  targets. For this reason, it's a good idea to follow the steps described in
+  <a href="#prompting">"Prompting for Permissions on the M Preview"</a> even if
+  your app doesn't fully support the new permissions model.
+</p>
+
+<p class="note">
+  <strong>Note:</strong> If a user turns off permissions for a legacy app, the system
+  silently disables the appropriate functionality. When the app attempts to
+  perform an operation that requires that permission, the operation will not
+  necessarily cause an exception. Instead, it might return an empty data set or
+  otherwise signal an error.
+</p>
diff --git a/docs/html/preview/images/direct-share-screen.png b/docs/html/preview/images/direct-share-screen.png
new file mode 100644
index 0000000..9e879e0
--- /dev/null
+++ b/docs/html/preview/images/direct-share-screen.png
Binary files differ
diff --git a/docs/html/preview/images/direct-share-screen_2x.png b/docs/html/preview/images/direct-share-screen_2x.png
new file mode 100644
index 0000000..3bbfa7d
--- /dev/null
+++ b/docs/html/preview/images/direct-share-screen_2x.png
Binary files differ
diff --git a/docs/html/preview/images/fingerprint-screen.png b/docs/html/preview/images/fingerprint-screen.png
new file mode 100644
index 0000000..0bb49ef
--- /dev/null
+++ b/docs/html/preview/images/fingerprint-screen.png
Binary files differ
diff --git a/docs/html/preview/images/fingerprint-screen_2x.png b/docs/html/preview/images/fingerprint-screen_2x.png
new file mode 100644
index 0000000..25ce51a
--- /dev/null
+++ b/docs/html/preview/images/fingerprint-screen_2x.png
Binary files differ
diff --git a/docs/html/preview/images/m-preview-timeline.png b/docs/html/preview/images/m-preview-timeline.png
new file mode 100644
index 0000000..2a45333
--- /dev/null
+++ b/docs/html/preview/images/m-preview-timeline.png
Binary files differ
diff --git a/docs/html/preview/images/text-selection.gif b/docs/html/preview/images/text-selection.gif
new file mode 100644
index 0000000..1d82fc6
--- /dev/null
+++ b/docs/html/preview/images/text-selection.gif
Binary files differ
diff --git a/docs/html/preview/index.html b/docs/html/preview/index.html
deleted file mode 100644
index 7cd029f..0000000
--- a/docs/html/preview/index.html
+++ /dev/null
@@ -1,631 +0,0 @@
-<!DOCTYPE html>
-
-<html>
-<head>
-
-
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="viewport" content="width=970" />
-
-<meta name="Description" content="Test and build your apps against the next version of Android to ensure they're ready when the platform officially launches.">
-<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
-<title>Android L Developer Preview | Android Developers</title>
-
-<!-- STYLESHEETS -->
-<link rel="stylesheet"
-href="//fonts.googleapis.com/css?family=Roboto+Condensed">
-<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
-  title="roboto">
-<link href="/assets/css/default.css" rel="stylesheet" type="text/css">
-
-
-
-<!-- JAVASCRIPT -->
-<script src="//www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
-<script type="text/javascript">
-  var toRoot = "/";
-  var metaTags = [];
-  var devsite = false;
-</script>
-<script src="/assets/js/docs.js" type="text/javascript"></script>
-
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-
-  ga('create', 'UA-5831155-1', 'android.com');
-  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
-  ga('send', 'pageview');
-  ga('universal.send', 'pageview'); // Send page view for new tracker.
-</script>
-
-</head>
-
-
-<body class="gc-documentation" itemscope="" itemtype="http://schema.org/Article">
-
-
-<a name="top"></a>
-<a name="download"></a>
-<div id="body-content">
-<div class="fullpage">
-<div id="jd-content">
-  <div class="jd-descr" itemprop="articleBody">
-<style>
-body,html, #qv {background-color:#e9e9e9}
-
-#qv * { font-weight:bold;}
-
-.fullpage>#footer,
-#jd-content>.content-footer.wrap {
-  display:none;
-}
-
-.content-footer {
-  display: none;
-}
-</style>
-
-    <div style="border-bottom: 1px solid #a5c43a; position: absolute; left: 0; right: 0; top: 0; z-index:99">
-      <div class="wrap" style="position: relative; height: 45px; padding: 0 20px;">
-        <a href="/index.html" style="position:absolute;top:8px">
-          <img src="/assets/images/dac_logo.png" srcset="/assets/images/dac_logo@2x.png 2x" width="123" height="25" alt="Android Developers home page">
-        </a>
-      </div>
-    </div>
-
-
-
-
-
-
-
-
-
-
-
-
-
-    <div class="landing-rest-of-page" style="position:relative;">
-
-
-
-
-
-
-
-
-  <div class="wrap" id="tos" style="display:none;padding-top:90px">
-
-    <p class="sdk-terms-intro">Before downloading the Android Preview system image,
-      you must agree to the following terms and conditions.</p>
-
-      <h2 class="norule">Terms and Conditions</h2>
-    <div class="sdk-terms" onfocus="this.blur()" style="width:100%">
-This is the Android SDK Preview License Agreement (the “License Agreement”).
-
-1. Introduction
-
-1.1 The Android SDK Preview (referred to in the License Agreement as the “Preview” and specifically including the Android system files, packaged APIs, and Preview library files, if and when they are made available) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the Preview.
-
-1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-
-1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-2. Accepting the License Agreement
-
-2.1 In order to use the Preview, you must first agree to the License Agreement. You may not use the Preview if you do not accept the License Agreement.
-
-2.2 By clicking to accept and/or using the Preview, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the Preview and may not accept the License Agreement if you are a person barred from receiving the Preview under the laws of the United States or other countries including the country in which you are resident or from which you use the Preview.
-
-2.4 If you will use the Preview internally within your company or organization you agree to be bound by the License Agreement on behalf of your employer or other entity, and you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the Preview on behalf of your employer or other entity.
-
-3. Preview License from Google
-
-3.1 Subject to the terms of the License Agreement, Google grants you a royalty-free, non-assignable, non-exclusive, non-sublicensable, limited, revocable license to use the Preview, personally or internally within your company or organization, solely to develop applications to run on the Android platform.
-
-3.2 You agree that Google or third parties owns all legal right, title and interest in and to the Preview, including any Intellectual Property Rights that subsist in the Preview. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.3 You may not use the Preview for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the Preview or any part of the Preview; or (b) load any part of the Preview onto a mobile handset or any other hardware device except a personal computer, combine any part of the Preview with other software, or distribute any software or device incorporating a part of the Preview.
-
-3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the Preview.
-
-3.5 Use, reproduction and distribution of components of the Preview licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement. You agree to remain a licensee in good standing in regard to such open source software licenses under all the rights granted and to refrain from any actions that may terminate, suspend, or breach such rights.
-
-3.6 You agree that the form and nature of the Preview that Google provides may change without prior notice to you and that future versions of the Preview may be incompatible with applications developed on previous versions of the Preview. You agree that Google may stop (permanently or temporarily) providing the Preview (or any features within the Preview) to you or to users generally at Google's sole discretion, without prior notice to you.
-
-3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the Preview.
-
-4. Use of the Preview by You
-
-4.1 Google agrees that nothing in the License Agreement gives Google any right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the Preview, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the Preview and write applications only for purposes that are permitted by (a) the License Agreement, and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the Preview to develop applications, you will protect the privacy and legal rights of users. If users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If users provide you with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, each user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the Preview, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of Google or any third party.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
-
-4.7 The Preview is in development, and your testing and feedback are an important part of the development process. By using the Preview, you acknowledge that implementation of some features are still under development and that you should not rely on the Preview having the full functionality of a stable release. You agree not to publicly distribute or ship any application using this Preview as this Preview will no longer be supported after the official Android SDK is released.
-
-5. Your Developer Credentials
-
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
-
-6. Privacy and Information
-
-6.1 In order to continually innovate and improve the Preview, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the Preview are being used and how they are being used. Before any of this information is collected, the Preview will notify you and seek your consent. If you withhold consent, the information will not be collected.
-
-6.2 The data collected is examined in the aggregate to improve the Preview and is maintained in accordance with Google's Privacy Policy located at http://www.google.com/policies/privacy/.
-
-7. Third Party Applications
-
-7.1 If you use the Preview to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party.
-
-8. Using Google APIs
-
-8.1 Google APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
-
-9. Terminating the License Agreement
-
-9.1 the License Agreement will continue to apply until terminated by either you or Google as set out below.
-
-9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the Preview and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement, with or without cause, upon notice to you.
-
-9.4 The License Agreement will automatically terminate without notice or other action upon the earlier of:
-(A) when Google ceases to provide the Preview or certain parts of the Preview to users in the country in which you are resident or from which you use the service; and
-(B) Google issues a final release version of the Android SDK.
-
-9.5 When the License Agreement is terminated, the license granted to you in the License Agreement will terminate, you will immediately cease all use of the Preview, and the provisions of paragraphs 10, 11, 12 and 14 shall survive indefinitely.
-
-10. DISCLAIMERS
-
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE PREVIEW IS AT YOUR SOLE RISK AND THAT THE PREVIEW IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE PREVIEW AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE PREVIEW IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE. WITHOUT LIMITING THE FOREGOING, YOU UNDERSTAND THAT THE PREVIEW IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-11. LIMITATION OF LIABILITY
-
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-12. Indemnification
-
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys’ fees) arising out of or accruing from (a) your use of the Preview, (b) any application you develop on the Preview that infringes any Intellectual Property Rights of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you of the License Agreement.
-
-13. Changes to the License Agreement
-
-13.1 Google may make changes to the License Agreement as it distributes new versions of the Preview. When these changes are made, Google will make a new version of the License Agreement available on the website where the Preview is made available.
-
-14. General Legal Terms
-
-14.1 the License Agreement constitutes the whole legal agreement between you and Google and governs your use of the Preview (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the Preview.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE PREVIEW IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE PREVIEW. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The License Agreement may not be assigned or transferred by you without the prior written approval of Google, and any attempted assignment without such approval will be void. You shall not delegate your responsibilities or obligations under the License Agreement without the prior written approval of Google.
-
-14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-    </div><!-- sdk terms -->
-
-
-
-    <div id="sdk-terms-form">
-      <p>
-        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-        <label id="agreeLabel" for="agree">I have read and agree with the above terms and conditions</label>
-      </p>
-      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-    </div>
-
-
-  </div><!-- end TOS -->
-
-
-
-
-
-
-
-      <div class="landing-section" id="landing-wrapper" style="padding:55px 10px 0">
-          <div class="landing-section-header" style="margin:0">
-            <div class="landing-h1">Android L Developer Preview</div>
-            <div class="landing-subhead" style="padding-bottom:40px">
-              Final APIs now available!
-            </div>
-          </div>
-        <div class="wrap" style="padding:20px; position:relative">
-
-    <img src="/images/home/l-hero_2x.png"
-          srcset="/images/home/l-hero.png 1x, /images/home/l-hero_2x.png 2x"
-          style=" margin:-5px -30px 0 0;float:right" alt="" width="510">
-
-  <a href="/about/versions/android-5.0.html" class="landing-button landing-primary"
-  style="position:absolute;z-index:100;right:215px;top:375px">Android 5.0 API Overview</a>
-
-      <div style="width:440px">
-<p>Android 5.0 (Lollipop) is now out of preview and available to users.</p>
-
-<p>If you previously developed apps with the L Developer Preview, be aware that various APIs and
-behaviors have changed, so you should update your SDK now to test your apps and take advantage of
-new features in Android 5.0.</p>
-
-
-        <p>To get the latest Android 5.0 SDK:</p>
-        <ol>
-          <li>Start the <a href="/tools/help/sdk-manager.html">Android SDK Manager</a>.</li>
-          <li>In the <b>Tools</b> section, select the latest <b>SDK Tools</b>,
-            <b>SDK Platform-tools</b>, and <b>SDK Build-tools</b>.</li>
-            <!-- Android L not yet showing up in Android SDK Manager...  -->
-          <li>Select everything under the <b>Android 5.0</b> section, then
-            click <b>Install packages...</b></li>
-          <li>Accept the licensing agreement for the packages, then click
-            <b>Install</b>.</li>
-        <li>If you previously installed the Android L Preview SDK, select all those
-          packages in the SDK Manager and click <strong>Delete packages</strong>.
-        </ol>
-        <p>Now you're ready to develop and test on Android 5.0 with your normal workflow
-          and begin publishing app updates to Google Play.
-      </div>
-
-    <h2 id="Start" class="norule" style="margin:60px 0 0 0">Get Started on Android 5.0</h2>
-        </div> <!-- end .wrap -->
-
-
-
-    <div class="wrap" style="background-color:#fff;padding:20px;position:relative">
-
-      <div id="qv-wrapper">
-      <div id="qv">
-      <h2>More about Android 5.0</h2>
-        <ul>
-          <li><a href="http://android-developers.blogspot.com/">Android 5.0 announcement</a></li>
-          <li><a href="/about/versions/android-5.0.html">Android 5.0 API Overview</a></li>
-          <li><a href="/sdk/api_diff/21/changes.html">Android 5.0 API Diff Report</a></li>
-          <li><a href="/samples/new/index.html">Android 5.0 API Samples</a></li>
-        </ul>
-      </div>
-      </div>
-
-      <p>Now that Android 5.0 APIs are final:</p>
-      <ul>
-        <li>The API level for Android 5.0 is 21, so be sure to update your
-        app's manifest file to set <a href="/guide/topics/manifest/uses-sdk-element.html#target"
-        ><code>targetSdkVersion</code></a> to
-        <code>"21"</code> when you begin testing:
-        <pre>&lt;uses-sdk android:targetSdkVersion="21" ... /></pre>
-        </li>
-        <li>Google Play now accepts APKs with <a
-          href="/guide/topics/manifest/uses-sdk-element.html#min"><code>minSdkVersion</code></a> or
-          <a href="/guide/topics/manifest/uses-sdk-element.html#target"
-                  ><code>targetSdkVersion</code></a> set
-          to <code>"21"</code>, so you can upload your updated apps today.</li>
-      </ul>
-
-      <p>If you previously flashed your Nexus 5 or Nexus 7 with a preview system image, you should
-        now update your device to the final factory system image.
-        Download the appropriate image from
-        <a href="http://developers.google.com/android/nexus/images">Factory Images for Nexus
-          Devices</a> and follow the flashing instructions on that page.</p>
-
-        </div> <!-- end .wrap -->
-
-
-
-
-
-
-
-
-        <div class="wrap" style="padding:20px; position:relative">
-    <h2 id="Material" class="norule" style="margin:40px 0 0 0">Design with Material</h2>
-    </div>
-
-        <div class="wrap" style="background-color:#fff;padding:20px;position:relative">
-      <img src="images/material-layers.png" width="240"
-          style="position:absolute;right:20px;top:-50px">
-
-      <div id="qv-wrapper" style="margin-top:120px">
-      <div id="qv">
-
-      <h2>More about Material Design</h2>
-        <ul>
-          <li><a href="http://www.google.com/design/spec/material-design/introduction.html">Material
-            Design Spec</a></li>
-          <li><a href="/design/material/index.html">Android Material Design</a></li>
-          <li><a href="/training/material/index.html">Creating Apps with Material Design</a>
-        </ul>
-      </div>
-      </div>
-
-
-<p>Material design is a complete design philosophy for visual, motion, and interaction design
-across platforms and devices. The <a href=
-"http://www.google.com/design/spec/material-design/introduction.html">material design specification
-(preview)</a> provides all the details for designers.</p>
-
-
-      <p>To get started with Material design in your Android app, update
-        your <a href="/guide/topics/manifest/uses-sdk-element.html#target"
-        ><code>targetSdkVersion</code></a> to <code>"21"</code> and apply the new
-        <a href="/reference/android/R.style.html#Theme_Material"
-        ><code>Material</code></a> theme. For example, when creating
-        a <a href="/guide/topics/ui/themes.html">custom theme</a>
-        for your app, open your project's <code>res/values/styles.xml</code> file
-        and extend the <a href="/reference/android/R.style.html#Theme_Material"
-        ><code>Material</code></a> theme:</p>
-<pre>
-&lt;resources>
-    &lt;style name="AppTheme" parent="android:Theme.Material">
-        &lt;!-- Customize the Material elements here -->
-    &lt;/style>
-&lt;/resources>
-</pre>
-<p>Then apply your custom theme to your application in the manifest file:</p>
-<pre>
-&lt;application android:theme="&#64;style/AppTheme">
-</pre>
-<p>Material design is more than just the UI theme, though. It's also about the way the app
-  behaves&mdash;how elements move and transform when the user interacts with them. So Android 5.0
-  and the <a href="/tools/support-library/features.html#v7">v7 support library</a> provide new
-  widgets and animation APIs that allow you to
-  build interaction patterns described in the
-  <a href="http://www.google.com/design/spec/material-design/introduction.html">Material design
-    specification</a>.</p>
-
-<p>All the Material design elements and interaction patterns provided by the UI styles and widgets
-are flexible, so you can adopt only what's appropriate for your app and retain a unique identity
-and experience for your product.</p>
-
-<p>And Material design on Android isn't just for Android 5.0. The
-  <a href="/tools/support-library/features.html#v7">v7 support library</a> has been significantly
-  updated in revision 21 to make many of the Material design elements available when
-  running on older versions of the platform.</p>
-
-<p>For many more details about how to implement the Material look and feel,
-    see <a href="/training/material/index.html">Creating Apps with Material
-    Design</a>.</p>
-
-
-    </div>
-
-
-
-
-
-
-
-
-
-
-
-    <div class="wrap" style="padding:20px; position:relative">
-    <h2 id="TV" class="norule" style="margin:40px 0 0 0">Build for Android TV</h2>
-    </div>
-
-        <div class="wrap" style="background-color:#fff;padding:20px;position:relative">
-      <img src="/tv/images/components.png" width="240"
-          style="position:absolute;right:20px;top:-50px">
-
-    <div id="qv-wrapper" style="margin-top:120px">
-    <div id="qv">
-
-    <h2>More about Android TV</h2>
-      <ul>
-        <li><a href="/design/tv/index.html">Android TV Design</a></li>
-        <li><a href="/training/tv/start/index.html">Building Apps for Android TV</a></li>
-        <li><a href="/training/tv/games/index.html">Building TV Games</a></li>
-        <li><a href="/training/tv/playback/index.html">Building TV Playback Apps</a></li>
-        <li><a href="/distribute/essentials/quality/tv.html">TV App Quality</a></li>
-      </ul>
-    </div>
-    </div>
-
-<p>Android 5.0 provides a new platform for users to experience your app on a big screen. The
-Android TV experience is centered around a simplified home screen that allows users to discover
-your app's content with personalized recommendations and voice search, or select your app to launch
-into your fullscreen experience.</p>
-
-
-<p>Making your app available on Android TV does not require that you build an entirely new app.
-Android TV is simply another form factor for the Android platform, so you can deliver the same APK
-that you provide for phones and tablets to TVs through Google Play. However, to make your app
-available on Android TV, you'll need to make some optimizations such as adding layouts
-for the big screen and adding support for remote control input. For more information about design
-guidelines, see <a href="/distribute/essentials/quality/tv.html">TV App Quality</a>.</p>
-
-<p class="note"><strong>Note:</strong> Google Play for Android TV will officially
-open for apps on November 3.</p>
-
-<p>Android TV is also great new opportunity for Android games. If you'd like to make your games
-available on Android TV, be sure to optimize the user experience for the big screen by following
-the recommendations in <a href="/training/tv/games/index.html">Building TV Games</a>.</p>
-
-
-      <p>To get started on Android TV, you need:</p>
-      <ul>
-        <li>The Android 5.0 SDK packages from the
-          <a href="/tools/help/sdk-manager.html">Android SDK Manager</a>,
-          including the <strong>Android TV System Image</strong> so you can create an
-          Android TV emulator.</li>
-        <li>An activity that's launchable from the Android TV home screen. This requires that you
-        add the <a href="/reference/android/content/Intent.html#CATEGORY_LEANBACK_LAUNCHER"
-        ><code>LEANBACK_LAUNCHER</code></a> category to one of your activities. For example:
-<pre>
-&lt;activity ... >
-    &lt;intent-filter>
-        &lt;action android:name="android.intent.action.MAIN" />
-        &lt;category android:name="android.intent.category.LEANBACK_LAUNCHER" />
-    &lt;/intent-filter>
-&lt;/activity>
-</pre>
-        </li>
-
-        <li>For a set of default styles that optimize your UI for the TV's
-          <em>leanback user experience</em>,
-          you should also apply the <a
-          href="/reference/android/support/v17/leanback/R.style.html#Theme_Leanback"
-        ><code>Leanback</code></a> theme to your activity:
-<pre>
-&lt;activity android:theme="@style/Theme.Leanback" ... >
-</pre>
-      </li>
-
-      </ul>
-      <p>You should also take advantage of the <a
-        href="/tools/support-library/features.html#v17-leanback">v17 leanback library</a>, which
-        provides the <a href="/reference/android/support/v17/leanback/R.style.html#Theme_Leanback"
-        ><code>Leanback</code></a> theme shown above, plus several widgets designed to
-        make your UI beautiful and easy to navigate on the big screen, such as a widget that creates
-        a set of large horizontal card views.</p>
-
-      <p>For more information about setting up a project for your TV app, building
-        TV layouts, and handling controller input,
-        see <a href="/training/tv/start/index.html">Building
-        TV Apps</a>.</p>
-    </div>
-
-
-
-
-
-
-
-
-      </div> <!-- end .landing-section -->
-
-
-
-
-
-
-
-
-    <!-- spacer -->
-    <div class="wrap" style="padding:20px; position:relative">
-      <p>&nbsp;</p>
-    </div>
-
-
-
-    <div id="footer" class="wrap" style="width:940px;position:relative;">
-      <div id="copyright">
-        Except as noted, this content is
-        licensed under <a href="http://creativecommons.org/licenses/by/2.5/">
-        Creative Commons Attribution 2.5</a>. For details and
-        restrictions, see the <a href="https://developer.android.com/license.html">Content
-        License</a>.
-      </div>
-    </div>
-  </div> <!-- end landing-body-content -->
-
-    </div>
-
-      <div class="content-footer wrap" itemscope=""
-        itemtype="http://schema.org/SiteNavigationElement">
-
-        <div class="paging-links layout-content-col col-10">
-
-        </div>
-
-      </div>
-
-
-
-
-  </div> <!-- end jd-content -->
-
-<div id="footer" class="wrap" style="width:940px">
-
-
-  <div id="copyright">
-
-  Except as noted, this content is
-  licensed under <a href="http://creativecommons.org/licenses/by/2.5/">
-  Creative Commons Attribution 2.5</a>. For details and
-  restrictions, see the <a href="https://developer.android.com/license.html">Content
-  License</a>.
-  </div>
-
-
-</div> <!-- end footer -->
-</div><!-- end doc-content -->
-
-</div> <!-- end body-content -->
-
-
-<script>
-  var urlRoot = "http://storage.googleapis.com/androiddevelopers/finalpreview/";
-  function onDownload(link) {
-
-    $("#downloadForRealz").html("Download " + $(link).text());
-    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
-
-    $("#tos").show();
-    $("#landing-wrapper").hide();
-
-    return true;
-  }
-
-
-  function onAgreeChecked() {
-    /* verify that the TOS is agreed */
-    if ($("input#agree").is(":checked")) {
-      /* reveal the download button */
-      $("a#downloadForRealz").removeClass('disabled');
-    } else {
-      $("a#downloadForRealz").addClass('disabled');
-    }
-  }
-
-  function onDownloadForRealz(link) {
-    if ($("input#agree").is(':checked')) {
-      $("#tos").fadeOut('fast');
-      $("#landing-wrapper").fadeIn('fast');
-      ga('send', 'event', 'L Preview', 'System Image', $("#downloadForRealz").html());
-      location.hash = "";
-      // reset the checkbox for future downloads
-      $("#agree").trigger('click');
-      $("a#downloadForRealz").addClass('disabled');
-      return true;
-    } else {
-      $("label#agreeLabel").parent().stop().animate({color: "#258AAF"}, 200,
-        function() {$("label#agreeLabel").parent().stop().animate({color: "#222"}, 200)}
-      );
-      return false;
-    }
-  }
-
-</script>
-
-
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/preview/index.jd b/docs/html/preview/index.jd
new file mode 100644
index 0000000..da7b5ea
--- /dev/null
+++ b/docs/html/preview/index.jd
@@ -0,0 +1,51 @@
+page.title=Android M Developer Preview
+page.tags="preview", 
+meta.tags="preview, M preview"
+fullpage=true
+section.landing=true
+header.hide=1
+footer.hide=1
+@jd:body
+
+<section class="dac-expand dac-hero dac-light" style="background-repeat:no-repeat">
+  <div class="wrap">
+    <div class="cols dac-hero-content">
+      <div class="col-9of16 col-push-7of16 dac-hero-figure">
+        <img class="dac-hero-image" src="{@docRoot}images/home/devices-hero_620px_2x.png">
+      </div>
+      <div class="col-7of16 col-pull-9of16">
+        <h1 class="dac-hero-title">Android M Developer Preview</h1>
+        <p class="dac-hero-description">
+          Get ready for the next version of Android. Test your apps on Nexus 5, 6, 9, and
+          Player. Explore what's new &mdash; a runtime permissions model, power saving Volta features, and new assist technology.
+        </p>
+
+        <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Get Started!
+        </a><br>
+      </div>
+    </div>
+
+    <div class="dac-section dac-small">
+      <div class="resource-widget resource-flow-layout col-16"
+           data-query="collection:preview/landing/resources"
+           data-cardSizes="6x2"
+           data-maxResults="3"></div>
+    </div>
+  </div>
+</section>
+
+<div class="wrap dac-offset-parent">
+  <a class="dac-fab dac-scroll-button" data-scroll-button href="#latest">
+    <i class="dac-sprite dac-arrow-down-gray"></i>
+  </a>
+</div>
+
+<section class="dac-section dac-gray dac-small dac-invert" id="latest"><div class="wrap">
+  <h2 class="norule">Latest</h2>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="type:blog+tag:featured+tag:preview"
+       data-cardSizes="6x6"
+       data-maxResults="3"></div>
+</div></section>
diff --git a/docs/html/preview/license.html b/docs/html/preview/license.jd
similarity index 80%
rename from docs/html/preview/license.html
rename to docs/html/preview/license.jd
index deb16aa..5ff52ba 100644
--- a/docs/html/preview/license.html
+++ b/docs/html/preview/license.jd
@@ -1,105 +1,16 @@
-<!DOCTYPE html>
+page.title=License Agreement
 
-<html>
-<head>
+@jd:body
 
-
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="viewport" content="width=970" />
-
-<meta name="Description" content="To get started with the Android SDK Preview, you must agree to the following terms and conditions. As described below, please note that this is a preview version of the Android SDK, subject to change, that you use at your own risk.">
-<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
-<title>License Agreement | Android Developers</title>
-
-<!-- STYLESHEETS -->
-<link rel="stylesheet"
-href="//fonts.googleapis.com/css?family=Roboto+Condensed">
-<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
-  title="roboto">
-<link href="/assets/css/default.css" rel="stylesheet" type="text/css">
-
-
-
-<!-- JAVASCRIPT -->
-<script src="//www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
-<script type="text/javascript">
-  var toRoot = "/";
-  var metaTags = [];
-  var devsite = false;
-</script>
-<script src="/assets/js/docs.js" type="text/javascript"></script>
-
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-
-  ga('create', 'UA-5831155-1', 'android.com');
-  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
-  ga('send', 'pageview');
-  ga('universal.send', 'pageview'); // Send page view for new tracker.
-</script>
-
-</head>
-
-
-<body class="gc-documentation" itemscope="" itemtype="http://schema.org/Article">
-
-
-<a name="top"></a>
-<div id="body-content">
-<div class="fullpage">
-<div id="jd-content">
-  <div class="jd-descr" itemprop="articleBody">
-<style>
-body,html, #qv {background-color:#e9e9e9}
-
-#qv * { font-weight:bold;}
-
-.fullpage>#footer,
-#jd-content>.content-footer.wrap {
-  display:none;
-}
-
-.content-footer {
-  display: none;
-}
-</style>
-
- <div style="border-bottom: 1px solid #a5c43a; position: absolute; left: 0; right: 0; top: 0;">
-      <div class="wrap" style="position: relative; height: 45px; padding: 0 20px;">
-        <a href="/index.html" style="position:absolute;top:8px">
-          <img src="/assets/images/dac_logo.png" srcset="/assets/images/dac_logo@2x.png 2x" width="123" height="25" alt="Android Developers home page">
-        </a>
-      </div>
-    </div>
-   
-    <div class="landing-rest-of-page">
-            <div class="landing-section" style="padding:55px 10px 0">
-
-<div class="wrap">
-
-<div class="col-16" id="doc-col" >
-
-        <h1 itemprop="name" >L Developer Preview License Agreement</h1>
-
-<div class="jd-descr" itemprop="articleBody">
-    <p>
-If you are using the Android SDK
-Preview, you must agree to the following terms
-and conditions. As described below, please note that the preview version of the
-Android SDK is subject to change, and that you use it at your own risk.  The
-Android SDK Preview is not a stable release, and may contain errors and defects
-that can result in serious damage to your computer systems, devices and data.
+<p>
+To get started with the Android SDK Preview, you must agree to the following terms and conditions. 
+As described below, please note that this is a preview version of the Android SDK, subject to change, that you use at your own risk.  The Android SDK Preview is not a stable release, and may contain errors and defects that can result in serious damage to your computer systems, devices and data.
 </p>
 
 <p>
 This is the Android SDK Preview License Agreement (the “License Agreement”).
 </p>
-
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:940px">
+<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
 1. Introduction
 
 1.1 The Android SDK Preview (referred to in the License Agreement as the “Preview” and specifically including the Android system files, packaged APIs, and Preview library files, if and when they are made available) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the Preview.
@@ -229,46 +140,4 @@
 14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
 
 
-</div>
-    </div>
-  </div>
-
-</div>
-  </div> <!-- end landing-body-content -->
-
-    </div>
-
-      <div class="content-footer wrap" itemscope=""
-        itemtype="http://schema.org/SiteNavigationElement">
-
-        <div class="paging-links layout-content-col col-10">
-
-        </div>
-
-      </div>
-
-
-
-
-  </div> <!-- end jd-content -->
-
-<div id="footer" class="wrap" style="width:940px">
-
-
-  <div id="copyright">
-
-  Except as noted, this content is
-  licensed under <a href="http://creativecommons.org/licenses/by/2.5/">
-  Creative Commons Attribution 2.5</a>. For details and
-  restrictions, see the <a href="https://developer.android.com/license.html">Content
-  License</a>.
-  </div>
-
-
-</div> <!-- end footer -->
-</div><!-- end doc-content -->
-
-</div> <!-- end body-content -->
-
-</body>
-</html>
+</div>
\ No newline at end of file
diff --git a/docs/html/preview/overview.jd b/docs/html/preview/overview.jd
new file mode 100644
index 0000000..633fd25
--- /dev/null
+++ b/docs/html/preview/overview.jd
@@ -0,0 +1,63 @@
+page.title=Preview Program Overview
+page.image=images/cards/card-preview_16-9_2x.png
+
+@jd:body
+
+<p>
+  The Android M platform is still under development, but we’re offering developers an early look
+  through the Android M Developer Preview program. This program is an opportunity for you to test
+  the compatibility of your apps with the next platform release, try out early versions of new API
+  features, and provide feedback to the Android team. Developers can try out the M Preview system
+  on with the Android SDK emulator or on Nexus 5, Nexus 6, Nexus 9, and Nexus Player devices. The
+  program includes update releases during course of the program to allow you to follow the progress
+  of feature development and fixes, leading up to the official release of the platform.
+</p>
+
+<img src="{@docRoot}preview/images/m-preview-timeline.png"
+  alt="Preview program timeline" id="figure1" style="margin-top: 15px;">
+<p class="img-caption">
+  <b>Figure 1.</b> Timeline for the M Developer Preview program.
+</p>
+
+<p>
+  We strongly encourage you to provide feedback for the M Preview releases through our <a href=
+  "https://code.google.com/p/android-developer-preview/">issue tracker</a>. Issues reported early
+  in the program have a better chance of being addressed before the official release, so reports
+  provided by June 30, 2015 receive priority processing by the Android team.
+</p>
+
+<p>
+  To get started testing your app:
+</p>
+
+<ul>
+  <li>Review the <a href="{@docRoot}preview/api-overview.html"> API Overview</a> and
+    <a href="{@docRoot}preview/api-changes.html">Behavior Changes</a> to
+    get an idea of what's new and how it affects your app.
+  </li>
+
+  <li>Setup for testing and development by following the instructions for
+    <a href="{@docRoot}preview/setup-sdk.html">Setting up the Preview SDK</a>
+    and configuring test devices.
+  </li>
+
+  <li>You can <a href="{@docRoot}preview/download.html">download</a> the latest M Developer
+    Preview system image for compatible Nexus devices and install it for testing. Once you have
+    flashed a development device, it is upgraded automatically with the next preview release
+    through over-the-air (OTA) updates.
+  </li>
+
+  <li>Review the M Preview <a href="{@docRoot}preview/reference.html">API Reference</a> and
+    <a href="{@docRoot}preview/samples.html">samples</a> to
+    gain more insight into new API features and how to use them in your app.
+  </li>
+
+  <li>Join the M Preview <a href="http://g.co/dev/AndroidMDevPreview">Google+ developer
+    community</a> to get the latest developer updates and connect with other
+    developers working with the preview.
+  </li>
+</ul>
+
+<p>
+  Thanks in advance for your participation in the developer preview program!
+</p>
diff --git a/docs/html/preview/preview_toc.cs b/docs/html/preview/preview_toc.cs
new file mode 100644
index 0000000..5b1f022
--- /dev/null
+++ b/docs/html/preview/preview_toc.cs
@@ -0,0 +1,61 @@
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/overview.html">
+      Program Overview</a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/download.html">
+      Download</a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/setup-sdk.html">
+      Set up the SDK</a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/api-overview.html">
+      API Overview</a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/api-changes.html">
+      Behavior Changes</a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty">
+    <a href="<?cs var:toroot ?>preview/features/runtime-permissions.html">
+      Runtime Permissions</a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty">
+    <a href="<?cs var:toroot ?>preview/backup/index.html">
+      Automatic Backups</a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty">
+    <a href="<?cs var:toroot ?>preview/data-binding/guide.html">
+      Data Binding</a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/samples.html">
+      Samples</a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/support.html">
+      Support</a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/license.html">
+      License Agreement</a></div>
+  </li>
+
+</ul>
diff --git a/docs/html/preview/samples.jd b/docs/html/preview/samples.jd
new file mode 100644
index 0000000..b3836f8
--- /dev/null
+++ b/docs/html/preview/samples.jd
@@ -0,0 +1,84 @@
+page.title=Samples
+
+@jd:body
+
+<p>
+  The following code samples are provided for the M Developer Preview. You can download them in the
+  Android SDK Manager under the <b>SDK Samples</b> component for the M Developer Preview.
+</p>
+
+<p class="note">
+  <strong>Note:</strong> These downloadable projects are designed
+   for use with Gradle and Android Studio.
+</p>
+
+
+<h3 id="RuntimePermissions">Runtime Permissions</h3>
+
+<p>
+ Android M changes the way system permissions work. Users are asked to approve permission
+ requests at runtime instead of during installation. This sample shows how to request these
+ permissions.
+</p>
+
+<p><a href="https://github.com/googlesamples/android-RuntimePermissions">Get it on GitHub</a></p>
+
+<h3 id="RuntimePermissionsCompat">Runtime Permissions Compat</h3>
+
+<p>
+ To support devices on previous versions of Android, this sample demonstrates how to work with the
+ new permissions system introduced in Android M by using a support library.
+</p>
+
+<p><a href="https://github.com/googlesamples/android-RuntimePermissionsCompat">Get it on
+GitHub</a></p>
+
+<h3 id="VoiceCamera">Voice Camera</h3>
+
+<p>
+  This sample demonstrates how to implement the "OK Google, take a selfie" voice command and confirm
+  the user intent with the <code>VoiceInteraction</code> API.
+</p>
+
+<p><a href="https://github.com/googlesamples/android-VoiceCamera">Get it on GitHub</a></p>
+
+
+<h3 id="DeepLinkSharing">Deep Link Sharing</h3>
+
+<p>
+  This sample shows how to handle content shared via deep links in your app. It demonstrates how to
+  implement the <code>ChooserTargetService</code>.
+</p>
+
+<p><a href="https://github.com/googlesamples/android-DeepLinkSharing">Get it on GitHub</a></p>
+
+<h3 id="NotificationBuilder">Notification Builder</h3>
+
+<p>
+  This sample demonstrates the improved
+  <a href="{@docRoot}reference/android/app/Notification.html"><code>Notification</code></a>
+  memory footprint and simplified creation of notifications with custom views.
+</p>
+
+<p><a href="https://github.com/googlesamples/android-NotificationBuilder">Get it on GitHub</a></p>
+
+<h3 id="ActiveNotification">Active Notification</h3>
+
+<p>
+  This sample demonstrates how the
+  <a href="{@docRoot}reference/android/app/NotificationManager.html"><code>NotificationManager</code></a>
+  can tell you how many notifications your app is currently showing.
+</p>
+
+<p><a href="https://github.com/googlesamples/android-ActiveNotification">Get it on GitHub</a></p>
+
+<h3 id="VoiceSynthesizer">Voice Synthesizer</h3>
+
+<p>
+  This sample demonstrates how to use the <code>NativeAudio</code> APIs to demonstrate low-latency
+  audio processing.
+</p>
+
+<p><a href="https://github.com/googlesamples/android-VoiceSynthesizer">Get it on GitHub</a></p>
+
+
diff --git a/docs/html/preview/setup-sdk.jd b/docs/html/preview/setup-sdk.jd
new file mode 100644
index 0000000..b31b104
--- /dev/null
+++ b/docs/html/preview/setup-sdk.jd
@@ -0,0 +1,129 @@
+page.title=Set Up the Preview SDK
+page.image=images/cards/card-set-up_16-9_2x.png
+
+@jd:body
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+      <ol>
+        <li><a href="#get-sdk">Get the Preview SDK</a></li>
+        <li><a href="#create-update">Create or Update a Project</a></li>
+        <li><a href="#setup-test">Set Up for Testing</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>The Preview SDK is available from the Android SDK Manager.
+This document assumes that you are familiar with Android app development, such
+as using the Android SDK Manager and creating projects. If you are new to
+Android, see <a href="{@docRoot}training/basics/firstapp/index.html">Building Your First
+App</a> training lesson first.</a></p>
+
+<h2 id="get-sdk">Get the Preview SDK</h2>
+
+<p>To add the Android Preview SDK components to your development environment:</p>
+
+<ol>
+  <li>Start the <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>.</li>
+  <li>In the <strong>Tools</strong> section, select the latest Android <strong>SDK Tools</strong>,
+    <strong>Platform-tools</strong>, and <strong>Build-tools</strong>.</li>
+  <li>Select everything under the <strong>Android M Developer Preview</strong> section and
+    click <strong>Install packages...</strong></li>
+  <li>Accept the Licensing Agreement for all of the packages and click
+    <strong>Install</strong>.</li>
+</ol>
+
+<p>After completing these steps, the preview components are available in your development
+  environment. </p>
+
+
+<h2 id="create-update">Create or Update a Project</h2>
+
+<p>
+  In order to use the preview APIs, you must create or update a development project to use
+  the preview components.
+</p>
+
+
+<h3 id="create">Create a new project</h3>
+
+<p>
+  We recommend using Android Studio for create a project with the preview. Follow the steps
+  described in <a href="{@docRoot}sdk/installing/create-project.html">Creating a Project</a>
+  until you arrive at the <em>Form Factors</em> screen in the project wizard. Then perform
+  the following steps to create a project configured for the preview.
+</p>
+
+<ul>
+  <li>Check <strong>Phone and Tablet</strong>.</li>
+  <li>Select <strong>API 22+: Android M (Preview)</strong> in <strong>Minimum SDK</strong>.</li>
+</ul>
+
+
+<h3 id="update">Update an existing project</h3>
+
+<p>
+  For existing projects, you must modify the project configuration to enable the preview APIs. In
+  your the development environment, open the <code>build.gradle</code> file for your module and
+  set these values as follows:
+</p>
+
+<ul>
+  <li><code>compileSdkVersion</code> is set to <code>'android-MNC'</code></li>
+  <li><code>minSdkVersion</code> is set to <code>'android-MNC'</code></li>
+  <li><code>targetSdkVersion</code> is set to <code>'android-MNC'</code></li>
+</ul>
+
+
+<h2 id="setup-test">Set Up for Testing</h2>
+
+<p>
+  Testing app with the preview requires that you have a device or virtual device configured with
+  the preview version of the platform. If you have a compatible device, you can install the preview
+  platform for testing. Otherwise, you can configure a virtual device for testing.
+</p>
+
+<h3 id="setup-device">Set up a Physical Device</h3>
+
+<p>
+  If you have a Nexus 5, Nexus 6, Nexus 9, or Nexus Player, you can install a preview
+  system image on these devices for testing your app.
+  You can set up virtual device with the preview version of the platform from within Android Studio
+  using the Android Virtual Device Manager tool.
+</p>
+
+<p class="caution">
+  <strong>Important:</strong> Installing a preview image on a device <em>removes all data from
+  it</em>, so you should backup any data before installing a preview image.
+</p>
+
+<h3 id="setupAVD">Set up a Virtual Device</h3>
+
+<p>
+  You can set up virtual device with the preview version of the platform from within Android Studio
+  using the Android Virtual Device Manager tool.
+</p>
+
+<p>To create an AVD with the AVD Manager:</p>
+
+<ol>
+  <li>Install the M Preview SDK in your development environment, as described
+      in <a href="{@docRoot}preview/setup-sdk.html">Setting Up the Preview
+      SDK.</a></li>
+  <li>Follow the steps in
+      <a href="{@docRoot}tools/devices/managing-avds.html">Managing AVDs with AVD
+      Manager</a>. Use the following settings:
+    <ul>
+      <li><strong>Device:</strong> Nexus 5, Nexus 6, Nexus 9, or Nexus Player</li>
+      <li><strong>Target:</strong>
+       Android M (Preview) - API Level M</li>
+    </ul>
+  </li>
+</ol>
+
+<p>
+  For more information about creating virtual devices for testing, see <a href=
+  "{@docRoot}tools/devices/index.html">Managing Virtual Devices</a>.
+</p>
diff --git a/docs/html/preview/support.jd b/docs/html/preview/support.jd
new file mode 100644
index 0000000..3ed1487
--- /dev/null
+++ b/docs/html/preview/support.jd
@@ -0,0 +1,68 @@
+page.title=Support
+page.image=images/cards/card-support_16-9_2x.png
+
+@jd:body
+
+<p>
+  If you've encountered bugs or have feedback about the M Developer Preview,
+  <a href="https://code.google.com/p/android-developer-preview/">create an issue</a>
+  on our issue tracker.
+</p>
+
+<p>
+  For more support, join the
+  <a href="https://plus.google.com/communities/101985907812750684586">M Developer
+  Preview Google+ community</a> to discuss your development experiences.
+</p>
+
+<h2 id="release-notes">Release Notes</h2>
+
+<!--
+<div class="toggle-content opened">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+      alt=""/>M Developer Preview, Revision 2</a> <em>(Month 2015)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+
+    <dl>
+
+    <dt>Fix Category 1</dt>
+    <dd>
+      <ul>
+        <li>Fixed issue X.</li>
+        <li>Fixed issue Y.</li>
+        <li>Fixed issue Z.</li>
+      </ul>
+    </dd>
+
+    <dt>Fix Category 2</dt>
+    <dd>
+      <ul>
+        <li>Fixed issue X.</li>
+        <li>Fixed issue Y.</li>
+        <li>Fixed issue Z.</li>
+      </ul>
+    </dd>
+
+    </dl>
+  </div>
+</div>
+-->
+
+<div class="toggle-content opened">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+      alt=""/>M Developer Preview, Revision 1</a> <em>(May 2015)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+
+    <dl>
+    <dt>Initial release.</dt>
+    </dl>
+  </div>
+</div>
+
+
diff --git a/docs/html/samples/new/index.jd b/docs/html/samples/new/index.jd
index 279b910..80765c7 100644
--- a/docs/html/samples/new/index.jd
+++ b/docs/html/samples/new/index.jd
@@ -1,4 +1,5 @@
 page.title=What's New
+page.image=images/cards/samples-new_2x.png
 
 @jd:body
 
diff --git a/docs/html/sdk/index.jd b/docs/html/sdk/index.jd
index cc1796e..5f795ce 100644
--- a/docs/html/sdk/index.jd
+++ b/docs/html/sdk/index.jd
@@ -1,6 +1,7 @@
 page.title=Download Android Studio and SDK Tools
 page.tags=sdk, android studio
 page.template=sdk
+page.image=images/cards/android-studio_2x.png
 header.hide=1
 page.metaDescription=Download the official Android IDE and developer tools to build apps for Android phones, tablets, wearables, TVs, and more.
 
@@ -54,7 +55,6 @@
 
 <style type="text/css">
   .offline {display:none;}
-  a.download-bundle-button {display:block;}
   h2.feature {
     padding-top:30px;
     margin-top:0;
@@ -62,20 +62,7 @@
   }
   .feature-blurb {
   margin:0px; font-size:16px; font-weight:300;
-  padding:40px 0 0 0;
-  }
-
-  .landing-button.green {
-    font-size:16px;
-    background-color:#90c653;
-    padding:8px 10px 10px;
-    margin:0;
-    width:206px;
-    text-align:center;
-  }
-
-  .landing-button.green:hover {
-    background-color:#85b84f;
+  padding-top:40px;
   }
 
   .landing-button .small {
@@ -142,7 +129,7 @@
 
 3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
 
-3.3 You may not use the SDK for any purpose not expressly permitted by this License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+3.3 You may not use the SDK for any purpose not expressly permitted by this License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
 
 3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.
 
@@ -245,7 +232,7 @@
 14.7 This License Agreement, and your relationship with Google under this License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from this License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
 
 
-<em>November 13, 2012</em>
+<em>December 8, 2014</em>
 </div>
 
 
@@ -283,7 +270,7 @@
 
 <img src="{@docRoot}images/tools/studio-hero.png"
 srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x"
-width="760" height="400" alt="" style="margin-bottom:80px" />
+width="760" height="400" alt="" />
 
 <div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
 
@@ -292,7 +279,7 @@
 <p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
 width: 400px;text-align: center;">The official Android IDE</p>
 
-<ul style="font-size:12px">
+<ul style="font-size:12px;line-height:19px;">
 <li>Android Studio IDE</li>
 <li>Android SDK tools</li>
 <li>Android 5.0 (Lollipop) Platform</li>
@@ -300,7 +287,7 @@
 </ul>
 
 
-<a class="online landing-button green download-bundle-button" style="margin-top:30px;"
+<a class="online landing-button green download-bundle-button"
 href="#Other" >Download Android Studio</a>
 
 <!-- this appears when viewing the offline docs -->
@@ -308,8 +295,9 @@
 To get Android Studio or stand-alone SDK tools, visit <a
 href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a>
 </p>
+</div>
 
-<ul style="margin-top:50px;color:#444">
+<ul>
   <li><a href="#Requirements">System Requirements</a></li>
   <li><a href="#Other">Other Download Options</a></li>
   <li><a href="{@docRoot}sdk/installing/migrate.html">Migrating to Android Studio</a></li>
@@ -317,14 +305,13 @@
 target="_blank">Take a Survey</a></li>
 </ul>
 
-</div>
 
 
 
+<div class="cols">
+<h2 class="feature norule col-13">Intelligent code editor</h2>
 
-<h2 class="feature norule" >Intelligent code editor</h2>
-
-<div class="col-9" style="margin:0 20px 0 0">
+<div class="col-9">
   <img src="{@docRoot}images/tools/studio-hero-code.png"
 srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
 </div><!-- end col-9 (left column) -->
@@ -339,9 +326,9 @@
 
 
 
-<h2 class="feature norule">Code templates and GitHub integration</h2>
+<h2 class="feature norule col-13">Code templates and GitHub integration</h2>
 
-<div class="col-9" style="margin:0 20px 0 0">
+<div class="col-9">
   <img src="{@docRoot}images/tools/studio-hero-import.png"
 srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
 </div><!-- end col-9 (left column) -->
@@ -356,9 +343,9 @@
 
 
 
-<h2 class="feature norule">Multi-screen app development</h2>
+<h2 class="feature norule col-13">Multi-screen app development</h2>
 
-<div class="col-9" style="margin:0 20px 0 0">
+<div class="col-9">
   <img src="{@docRoot}images/tools/studio-hero-screens.png"
 srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
 </div><!-- end col-9 (left column) -->
@@ -373,9 +360,9 @@
 
 
 
-<h2 class="feature norule">Virtual devices for all shapes and sizes</h2>
+<h2 class="feature norule col-13">Virtual devices for all shapes and sizes</h2>
 
-<div class="col-9" style="margin:0 20px 0 0">
+<div class="col-9">
   <img src="{@docRoot}images/tools/studio-hero-avds.png"
 srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
 </div><!-- end col-9 (left column) -->
@@ -389,10 +376,10 @@
 
 
 
-<h2 class="feature norule">
+<h2 class="feature norule col-13">
 Android builds evolved, with Gradle</h2>
 
-<div class="col-9" style="margin:0 20px 0 0">
+<div class="col-9">
   <img src="{@docRoot}images/tools/studio-hero-gradle.png"
 srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
 </div><!-- end col-9 (left column) -->
@@ -403,8 +390,7 @@
   <p>Build APKs from Android Studio or the command line.</p>
 </div>
 
-
-
+</div>
 
 <h2 class="feature norule">More about Android Studio</h2>
 <div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
diff --git a/docs/html/tools/projects/templates.jd b/docs/html/tools/projects/templates.jd
index 966d25f..002e2c5 100644
--- a/docs/html/tools/projects/templates.jd
+++ b/docs/html/tools/projects/templates.jd
@@ -1,4 +1,7 @@
 page.title=Using Code Templates
+page.image=images/cards/card-using-code-templates_16x9_2x.png
+page.metaDescription=Quickly create Android app projects with various UI or functional components. 
+page.tags=studio,templates,firstapp
 @jd:body
 
   <div id="qv-wrapper">
@@ -26,7 +29,7 @@
     </div>
   </div>
 
-
+<img style="float:right" src="{@docRoot}images/cards/card-using-code-templates_16x9_2x.png">
 <p>The SDK tools provide templates for quickly creating Android application projects with the basic
   structure or for adding components to your existing application modules. The code templates
   provided by the Android SDK follow the Android design and development guidelines to get you on the
diff --git a/docs/html/tools/studio/index.jd b/docs/html/tools/studio/index.jd
index a5b14a7..7f7fbad 100644
--- a/docs/html/tools/studio/index.jd
+++ b/docs/html/tools/studio/index.jd
@@ -1,4 +1,7 @@
 page.title=Android Studio Overview
+page.image=images/cards/card-android-studio-overview_16x9_2x.jpg
+page.metaDescription=Learn about the official IDE for Android.
+page.tags=studio,sdk,tools,firstapp
 @jd:body
 
 <div id="qv-wrapper">
diff --git a/docs/html/tools/support-library/index.jd b/docs/html/tools/support-library/index.jd
index 1aef0c1..98c9ad5 100644
--- a/docs/html/tools/support-library/index.jd
+++ b/docs/html/tools/support-library/index.jd
@@ -1322,3 +1322,4 @@
       <p>Initial release with the v4 library.</p>
   </div>
 </div>
+
diff --git a/docs/html/training/building-location.jd b/docs/html/training/building-location.jd
new file mode 100644
index 0000000..9ab0908
--- /dev/null
+++ b/docs/html/training/building-location.jd
@@ -0,0 +1,11 @@
+page.title=Building Apps with Location &amp; Maps
+page.trainingcourse=true
+
+@jd:body
+
+
+<p>
+  These classes teach you how to add user location and mapping information to your app.
+  Make your app more helpful and relevant to users by providing information about where
+  they are and the world around them.
+</p>
\ No newline at end of file
diff --git a/docs/html/training/building-wearables.jd b/docs/html/training/building-wearables.jd
index 8015d0c..c9e1856 100644
--- a/docs/html/training/building-wearables.jd
+++ b/docs/html/training/building-wearables.jd
@@ -1,6 +1,6 @@
 page.title=Building Apps for Wearables
 page.trainingcourse=true
-page.image=wear/images/notifications.png
+page.image=images/cards/android-wear-apps_2x.jpg
 page.metaDescription=Learn how to build notifications, send and sync data, and use voice actions.
 
 @jd:body
@@ -11,4 +11,4 @@
 
 <p class="note"><strong>Note:</strong> For more information about the APIs used in these training
 classes, see the <a href="{@docRoot}reference/packages-wearable-support.html">Wear API reference
-documentation</a>.</p>
\ No newline at end of file
+documentation</a>.</p>
diff --git a/docs/html/training/maps/index.jd b/docs/html/training/maps/index.jd
new file mode 100644
index 0000000..3efa493
--- /dev/null
+++ b/docs/html/training/maps/index.jd
@@ -0,0 +1,70 @@
+page.title=Adding Maps
+page.tags=mapview,location
+page.article=true
+page.trainingcourse=true
+@jd:body
+
+
+<img src="{@docRoot}images/google/gps-maps.png"
+  width="300"
+  style="float:right;margin:0 0 20px 20px"
+  alt="Google maps sample image">
+
+<p>
+  Allow your users to explore the world with rich maps provided by Google. Identify
+  locations with custom markers, augment the map data with image overlays, embed one
+  or more maps as fragments, and much more.
+</p>
+
+<p>
+  The <a href="https://developers.google.com/maps/documentation/android/">Google
+  Maps Android API</a> allows you to include maps and customized mapping information
+  in your app.
+</p>
+
+
+<h2 id="features">Key Developer Features</h2>
+
+<h4>Add maps to your app</h4>
+<p>
+  With Google Maps Android API v2, you can embed maps into an activity as a fragment with a simple
+  XML snippet. The new Maps offer exciting features such as 3D maps; indoor, satellite, terrain,
+  and hybrid maps; vector-based tiles for efficient caching and drawing; animated transitions; and
+  much more. <a class="external-link" href=
+  "https://developers.google.com/maps/documentation/android/map">Add a map object</a>.
+</p>
+
+<h4>Customize the map</h4>
+<p>
+  Add markers onto the map to indicate special points of interest for your users. You can define
+  custom colors or icons for your map markers to match your app's look and feel. To further enhance
+  the app, draw polylines and polygons to indicate paths or regions, or provide complete image
+  overlays. <a class="external-link" href=
+  "https://developers.google.com/maps/documentation/android/marker">Draw markers</a>.
+</p>
+
+<h4>Control the user's view</h4>
+<p>
+  Give your users a different view of the world with the ability to control the rotation, tilt,
+  zoom, and pan properties of the "camera" perspective of the map. <a class="external-link" href=
+  "https://developers.google.com/maps/documentation/android/views">Change the view</a>.
+</p>
+
+<h4>Add Street View to your app</h4>
+<p>
+  Embed Street View into an activity and let your users explore the world through panoramic
+  360-degree views. Programmatically control the zoom and orientation (tilt and bearing) of the
+  Street View camera, and animate the camera movements over a given duration. <a class=
+  "external-link" href="https://developers.google.com/maps/documentation/android/streetview">Add
+  Street View</a>.
+</p>
+
+
+<h2 id="start">Get Started</h2>
+<p>
+  Google Maps Android API is part of the Google Play services platform. To use Google Maps,
+  set up the Google Play services SDK in your app development project. For more information,
+  see the <a class="external-link"
+  href="https://developers.google.com/maps/documentation/android/start">Getting Started</a> guide
+  for the Google Maps Android API.
+</p>
diff --git a/docs/html/training/material/index.jd b/docs/html/training/material/index.jd
index 7cbd777..6e07860 100644
--- a/docs/html/training/material/index.jd
+++ b/docs/html/training/material/index.jd
@@ -1,6 +1,6 @@
-page.title=Creating Apps with Material Design
+page.title=Material Design for Developers
 page.type=design
-page.image=images/material.png
+page.image=images/cards/material_2x.png
 page.metaDescription=Learn how to apply material design to your apps.
 
 
diff --git a/docs/html/training/monetization/ads-and-ux.jd b/docs/html/training/monetization/ads-and-ux.jd
deleted file mode 100644
index d3ab676..0000000
--- a/docs/html/training/monetization/ads-and-ux.jd
+++ /dev/null
@@ -1,250 +0,0 @@
-page.title=Advertising without Compromising User Experience
-parent.title=Monetizing Your App
-parent.link=index.html
-@jd:body
-
-
-<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
-
-<h2>This lesson teaches you to</h2>
-<ol>
-  <li><a href="#ObtainPubAccountAndSDK">Obtain a Publisher Account and Ad SDK</a></li>
-  <li><a href="#DeclarePermissions">Declare Proper Permissions</a></li>
-  <li><a href="#SetupAdPlacement">Set Up Ad Placement</a></li>
-  <li><a href="#InitializeAd">Initialize the Ad</a></li>
-  <li><a href="#EnableTestMode">Enable Test Mode</a></li>
-  <li><a href="#ImplementListeners">Implement Ad Event Listeners</a></li>
-</ol>
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="http://code.google.com/mobile/ads/">AdMob SDK</a></li>
-</ul>
-
-
-<h2>Try it out</h2>
-
-<div class="download-box">
-  <a href="http://developer.android.com/shareables/training/MobileAds.zip" class="button">Download
-the sample app</a>
-  <p class="filename">MobileAds.zip</p>
-</div>
-
-
-</div>
-</div>
-
-<p>Advertising is one of the means to monetize (make money with) mobile applications.  In this
-lesson, you are going to learn how to incorporate banner ads in your Android application.</p>
-
-<p>While this lesson and the sample application use <a
-href="http://code.google.com/mobile/ads/">AdMob</a> to serve ads, the Android platform doesn’t
-impose any restrictions on the choice of mobile advertising network.  To the extent possible, this
-lesson generically highlights concepts that are similar across advertising networks.</p>
-
-<p>For example, each advertising network may have some network-specific configuration settings such
-as geo-targeting and ad-text font size, which may be configurable on some networks but not on
-others.  This lesson does not touch not these topics in depth and you should consult documentation
-provided by the network you choose.</p>
-
-
-<h2 id="ObtainPubAccountAndSDK">Obtain a Publisher Account and Ad SDK</h2>
-
-<p>In order to integrate advertisements in your application, you first must become a publisher by
-registering a publishing account with the mobile advertising network.  Typically, an identifier is
-provisioned for each application serving advertisements.  This is how the advertising network
-correlates advertisements served in applications.  In the case of AdMob, the identifier is known as
-the Publisher ID.  You should consult your advertising networks for details.</p>
-
-<p>Mobile advertising networks typically distribute a specific Android SDK, which consists of code
-that takes care of communication, ad refresh, look-and-feel customization, and so on.</p>
-
-<p>Most advertising networks distribute their SDK as a JAR file.  Setting up ad network JAR file in
-your Android project is no different from integrating any third-party JAR files.  First, copy the
-JAR files to the <code>libs/</code> directory of your project.  If you’re using Eclipse as IDE, be
-sure to add the JAR file to the Build Path.  It can be done through <b>Properties &gt;
-Java Build Path &gt; Libraries &gt; Add JARs</b>.</p>
-
-<img src="/images/training/ads-eclipse-build-path.png" id="figure1" />
-<p class="img-caption">
-    <strong>Figure 1.</strong> Eclipse build path settings.
-</p>
-
-
-<h2 id="DeclarePermissions">Declare Proper Permissions</h2>
-
-<p>Because the mobile ads are fetched over the network, mobile advertising SDKs usually
-require the declaration of related permissions in the Android manifest.  Other kinds of permissions
-may also be required.</p>
-
-<p>For example, here's how you can request the {@link android.Manifest.permission#INTERNET}
-permission:</p>
-
-<pre>
-&lt;/manifest&gt;
-    &lt;uses-permission android:name=&quot;android.permission.INTERNET&quot; /&gt;
-    ...
-    &lt;application&gt;...&lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-
-
-<h2 id="SetupAdPlacement">Set Up Ad Placement</h2>
-
-<div class="figure" style="width:262px">
-<img src="/images/training/ads-top-banner.png" id="figure2" />
-<p class="img-caption">
-    <strong>Figure 2.</strong> Screenshot of the ad layout in the Mobile Ads sample.
-</p>
-</div>
-
-<p>Banner ads typically are implemented as a custom {@link android.webkit.WebView} (a view for
-viewing web pages). Ads also come in different dimensions and shapes.  Once you’ve decided to put an
-ad on a particular screen, you can add it in your activity's XML layout.  The XML snippet below
-illustrates a banner ad displayed on top of a screen.</p>
-
-<pre>
-&lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
-        android:id=&quot;&#064;+id/ad_catalog_layout&quot;
-        android:orientation=&quot;vertical&quot;
-        android:layout_width=&quot;match_parent&quot;
-        android:layout_height=&quot;match_parent&quot; &gt;
-    &lt;com.google.ads.AdView
-        xmlns:googleads=&quot;http://schemas.android.com/apk/lib/com.google.ads&quot;
-        android:id=&quot;&#064;+id/ad&quot;
-        android:layout_width=&quot;fill_parent&quot;
-        android:layout_height=&quot;wrap_content&quot;
-        googleads:adSize=&quot;BANNER&quot;
-        googleads:adUnitId=&quot;&#064;string/admob_id&quot; /&gt;
-    &lt;TextView android:id=&quot;&#064;+id/title&quot;
-        android:layout_width=&quot;match_parent&quot;
-        android:layout_height=&quot;wrap_content&quot;
-        android:text=&quot;&#064;string/banner_top&quot; /&gt;
-    &lt;TextView android:id=&quot;&#064;+id/status&quot;
-        android:layout_width=&quot;match_parent&quot;
-        android:layout_height=&quot;wrap_content&quot; /&gt;
-&lt;/LinearLayout&gt;
-</pre>
-
-<p>You should consider using alternative ad sizes based on various configurations such as screen
-size or screen orientation.  This can easily be addressed by <a
-href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">providing
-alternative resources</a>. For instance, the above sample layout might placed under the
-<code>res/layout/</code> directory as the default layout. If larger ad
-sizes are available, you can consider using them for "large" (and above) screens. For example, the
-following snippet comes from a layout file in the <code>res/layout-large/</code> directory, which
-renders a larger ad for "large" screen sizes.</p>
-
-<pre>
-...
-&lt;com.google.ads.AdView
-    xmlns:googleads=&quot;http://schemas.android.com/apk/lib/com.google.ads&quot;
-    android:id=&quot;&#064;+id/ad&quot;
-    android:layout_width=&quot;fill_parent&quot;
-    android:layout_height=&quot;wrap_content&quot;
-    <strong>googleads:adSize=&quot;IAB_LEADERBOARD&quot;</strong>
-    googleads:adUnitId=&quot;&#064;string/admob_id&quot; /&gt;
-...
-</pre>
-
-<p>Notice that the custom view name and it’s configuration attributes are network-specific.  Ad
-networks might support configurations with XML layout attributes (as shown above), runtime APIs, or
-both. In the sample application, Mobile Ads, the {@code AdView} ad size
-(<code>googleads:adSize</code>) and publisher ID (<code>googleads:adUnitId</code>) are set up in the
-XML layout.</p>
-
-<p>When deciding where to place ads within your application, you should carefully
-consider user-experience.  For example, you don’t want to fill the screen with
-multiple ads that will quite likely annoy your users.  In fact, this practice is banned by some ad
-networks. Also, avoid placing ads too closely to UI controls to avoid inadvertent clicks.</p>
-
-<p>Figures 3 and 4 illustrate what <strong>not</strong> to do.</p>
-
-<div style="float:left;width:275px">
-<img src="/images/training/ads-close-to-button.png" />
-<p class="img-caption">
-    <strong>Figure 3.</strong> Avoid putting UI
-inputs too closely to an ad banner to prevent inadvertent ad clicks.
-</p>
-</div>
-
-<div style="float:left;width:275px;height:530px;margin-left:2em">
-<img src="/images/training/ads-cover-content.png" />
-<p class="img-caption">
-    <strong>Figure 4.</strong> Don't overlay ad banner on useful content.
-</p>
-</div>
-
-
-<h2 id="InitializeAd" style="clear:left">Initialize the Ad</h2>
-
-<p>After setting up the ad in the XML layout, you can further customize the ad in {@link
-android.app.Activity#onCreate Activity.onCreate()} or {@link
-android.app.Fragment#onCreateView Fragment.onCreateView()} based on how your application is
-architected. Depending on the ad network, possible configuration parameters are: ad size, font
-color, keyword, demographics, location targeting, and so on.</p>
-
-<p>It is important to respect user privacy if certain parameters, such as demographics or location,
-are passed to ad networks for targeting purposes.  Let your users know and give them a chance to opt
-out of these features.</p>
-
-<p>In the below code snippet, keyword targeting is used.  After the keywords are set, the
-application calls <code>loadAd()</code> to begin serving ads.</p>
-
-<pre>
-public View onCreateView(LayoutInflater inflater, ViewGroup container,
-        Bundle savedInstanceState) {
-    ...
-    View v = inflater.inflate(R.layout.main, container, false);
-    mAdStatus = (TextView) v.findViewById(R.id.status);
-    mAdView = (AdView) v.findViewById(R.id.ad);
-    mAdView.setAdListener(new MyAdListener());
-
-    AdRequest adRequest = new AdRequest();
-    adRequest.addKeyword("sporting goods");
-    mAdView.loadAd(adRequest);
-    return v;
-}
-</pre>
-
-
-
-<h2 id="EnableTestMode">Enable Test Mode</h2>
-
-<p>Some ad networks provide a test mode.  This is useful during development and testing in which ad
-impressions and clicks are not counted.</p>
-
-<p class="caution"><strong>Important:</strong> Be sure to turn off test mode before publishing your
-application.</p>
-
-
-<h2 id="ImplementListeners">Implement Ad Event Listeners</h2>
-
-<p>Where available, you should consider implementing ad event listeners, which provide callbacks on
-various ad-serving events associated with the ad view.  Depending on the ad network, the listener
-might provide notifications on events such as before the ad is loaded, after the ad is loaded,
-whether the ad fails to load, or other events.  You can choose to react to these events based on
-your specific situation.  For example, if the ad fails to load, you can display a custom banner
-within the application or create a layout such that the rest of content fills up the screen.</p>
-
-<p>For example, here are some event callbacks available from AdMob's {@code AdListener}
-interface:</p>
-
-<pre>
-private class MyAdListener implements AdListener {
-    ...
-
-    &#064;Override
-    public void onFailedToReceiveAd(Ad ad, ErrorCode errorCode) {
-        mAdStatus.setText(R.string.error_receive_ad);
-    }
-
-    &#064;Override
-    public void onReceiveAd(Ad ad) {
-        mAdStatus.setText("");
-    }
-}
-</pre>
-
diff --git a/docs/html/training/monetization/index.jd b/docs/html/training/monetization/index.jd
deleted file mode 100644
index f90bfc7..0000000
--- a/docs/html/training/monetization/index.jd
+++ /dev/null
@@ -1,44 +0,0 @@
-page.title=Monetizing Your App
-
-trainingnavtop=true
-startpage=true
-next.title=Advertising without Compromising User Experience
-next.link=ads-and-ux.html
-
-@jd:body
-
-<div id="tb-wrapper">
-<div id="tb">
-
-<!-- Required platform, tools, add-ons, devices, knowledge, etc. -->
-<h2>Dependencies and prerequisites</h2>
-<ul>
-  <li>Android 1.0 or higher</li>
-  <li>Experience with <a href="{@docRoot}guide/topics/ui/declaring-layout.html">XML layouts</a></li>
-</ul>
-
-
-<h2>Try it out</h2>
-
-<div class="download-box">
-  <a href="http://developer.android.com/shareables/training/MobileAds.zip" class="button">Download
-the sample app</a>
-  <p class="filename">MobileAds.zip</p>
-</div>
-
-</div>
-</div>
-
-<p>Apart from offering paid apps, there are a number of other ways to monetize your mobile applications.  In this class, we are going to examine a number of typical methods (more lessons are to come) and their associated technical best practices.  Obviously, each application is different and you should experiment with different combinations of these and other monetization methods to determine what works best for you.</p>
-
-<h2>Lessons</h2>
-
-<!-- Create a list of the lessons in this class along with a short description of each lesson.
-These should be short and to the point. It should be clear from reading the summary whether someone
-will want to jump to a lesson or not.-->
-
-<dl>
-  <dt><b><a href="ads-and-ux.html">Advertising without Compromising User Experience</a></b></dt>
-    <dd>In this lesson, you will learn how to monetize your application with mobile
-advertisements.</dd>
-</dl>
diff --git a/docs/html/google/play/safetynet/start.jd b/docs/html/training/safetynet/index.jd
similarity index 95%
rename from docs/html/google/play/safetynet/start.jd
rename to docs/html/training/safetynet/index.jd
index 8307928..6090f41 100644
--- a/docs/html/google/play/safetynet/start.jd
+++ b/docs/html/training/safetynet/index.jd
@@ -1,11 +1,10 @@
-page.title=Getting Started with SafetyNet
-parent.title=SafetyNet for Android
-parent.link=index.html
+page.title=Checking Device Compatibility with SafetyNet
+
 @jd:body
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
   <h2>In this document</h2>
   <ol>
@@ -68,7 +67,9 @@
 You acknowledge and understand that the SafetyNet API works by collecting hardware and software
 information, such as device and application data and the results of integrity checks, and sending
 that data to Google for analysis. Pursuant to Section 3(d) of the
-<a href= "https://developers.google.com/terms/">Google APIs Terms of Service</a>, you agree that if you use the APIs that it is your responsibility to provide any necessary notices or consents for the collection and sharing of this data with Google.
+<a href= "https://developers.google.com/terms/">Google APIs Terms of Service</a>, you agree that if
+you use the APIs that it is your responsibility to provide any necessary notices or consents for the
+collection and sharing of this data with Google.
 </div>
 
 <h2 id="connect-play">
@@ -256,9 +257,9 @@
   <a href=
   "{@docRoot}reference/com/google/android/gms/safetynet/SafetyNetApi.AttestationResult.html#getJwsResult()">
 {@code getJwsResult()}</a> method is null or contains an {@code error:} field, then communication
-  with the service failed and should be retried. You should use an <a href=
-  "{@docRoot}google/gcm/gcm.html#retry">exponential backoff</a> technique for
-  retries, to avoid flooding the service with additional requests.
+  with the service failed and should be retried. You should use an <a class="external-link" href=
+  "https://developers.google.com/api-client-library/java/google-http-java-client/backoff">
+  exponential backoff</a> technique for retries, to avoid flooding the service with additional requests.
 </p>
 
 <h3 id="verify-compat-check">
@@ -362,7 +363,7 @@
   </li>
 </ol>
 
-<p>
+<p class="note">
   <strong>Important:</strong> This use of the Android Device Verification API only validates that the
   provided JWS message was received from the SafetyNet service. It <em>does not</em> verify that the
   payload data matches your original compatibility check request.
diff --git a/docs/html/training/sign-in/index.jd b/docs/html/training/sign-in/index.jd
new file mode 100644
index 0000000..9d49fd9
--- /dev/null
+++ b/docs/html/training/sign-in/index.jd
@@ -0,0 +1,68 @@
+page.title=Adding Sign-In
+page.tags=authentication,signin,social,google+
+page.article=true
+page.trainingcourse=true
+@jd:body
+
+
+<img src="{@docRoot}images/google/gps-googleplus.png"
+  width="300"
+  style="float:right;margin:0 0 20px 20px"
+  alt="Google maps sample image">
+
+<p>
+  The Google+ platform for Android lets you authenticate a user with the same credentials they use
+  on Google every day. Once a user signs in with Google, you can create more engaging experiences
+  and drive usage of your app.
+</p>
+
+<p>
+  The <a href="https://developers.google.com/+/mobile/android/">Google+ Android API</a> allows
+  you to integrate sign-in and social features into your app.
+</p>
+
+
+<h2 id="features">Key Developer Features</h2>
+
+<h4>Trusted authentication</h4>
+<p>
+  Google+ Sign-In is a simple, trusted, and secure way to let people sign in to your app with their
+  Google credentials and bring along their Google+ info.<br>
+  <a href="https://developers.google.com/+/mobile/android/sign-in" class="external-link">Add
+  sign-in</a>.
+</p>
+
+<h4>Access the profile and social graph</h4>
+<p>
+  Once users have signed in with Google, your app can welcome them by name, display their picture,
+  connect them with friends, and lots more.<br>
+  <a href="https://developers.google.com/+/mobile/android/people" class="external-link">Access the
+  social graph</a>.
+</p>
+
+<h4>Stand out in the stream</h4>
+<p>
+  Interactive posts is a rich way of sharing to Google+. It lets users prompt friends to take
+  specific actions in your app from a Google+ post, like "listen," "RSVP," "check-in," and over 100
+  more actions.<br>
+  <a class="external-link" href="https://developers.google.com/+/mobile/android/share">Post
+  interactive content</a>.
+</p>
+
+<h4>Recommend content</h4>
+<p>
+  Add a native +1 button so users can recommend content from your app. These endorsements can give
+  your app more credibility and help it grow faster.<br>
+  <a class="external-link" href="https://developers.google.com/+/mobile/android/recommend">Add the
+  +1 button</a>.
+</p>
+
+
+<h2 id="start">Get Started</h2>
+<p>
+  The Google+ Android APIs are part of the Google Play services platform. To use Google+ features,
+  set up the Google Play services SDK in your app development project. For more information, see
+  the <a class="external-link" href=
+  "https://developers.google.com/+/mobile/android/getting-started">Getting Started</a> guide for
+  the Google+ Platform for Android
+</p>
\ No newline at end of file
diff --git a/docs/html/training/training_toc.cs b/docs/html/training/training_toc.cs
index 82d0a90..cefff81 100644
--- a/docs/html/training/training_toc.cs
+++ b/docs/html/training/training_toc.cs
@@ -672,12 +672,59 @@
   <!-- End connectivity and cloud -->
 
 
+  <li class="nav-section">
+    <div class="nav-section-header">
+      <a href="<?cs var:toroot ?>training/building-location.html">
+      <span class="small">Building Apps with</span><br/>
+              Location &amp; Maps
+      </a>
+    </div>
+    <ul>
+      <li class="nav-section">
+        <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>training/location/index.html"
+             description="How to add location-aware features to your app by getting the user's current location.">
+             Making Your App Location-Aware
+          </a>
+        </div>
+        <ul>
+          <li>
+            <a href="<?cs var:toroot ?>training/location/retrieve-current.html">
+            Getting the Last Known Location
+            </a>
+          </li>
+          <li>
+            <a href="<?cs var:toroot ?>training/location/receive-location-updates.html">
+            Receiving Location Updates
+            </a>
+          </li>
+          <li>
+            <a href="<?cs var:toroot ?>training/location/display-address.html">
+            Displaying a Location Address
+          </a>
+          </li>
+          <li><a href="<?cs var:toroot ?>training/location/geofencing.html">
+            Creating and Monitoring Geofences
+          </a>
+          </li>
+        </ul>
+      </li>
+      <li class="nav-section">
+        <a href="<?cs var:toroot ?>training/maps/index.html"
+           description="How to add maps and mapping information to your app.">
+           Adding Maps
+        </a>
+      </li>
+    </ul>
+  </li>
+  <!-- End location and maps -->
+
 
   <li class="nav-section">
     <div class="nav-section-header">
       <a href="<?cs var:toroot ?>training/building-userinfo.html">
       <span class="small">Building Apps with</span><br/>
-              User Info &amp; Location
+              User Info &amp; Sign-In
       </a>
     </div>
     <ul>
@@ -712,39 +759,15 @@
           </li>
         </ul>
       </li>
-
       <li class="nav-section">
-        <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>training/location/index.html"
-             description="How to add location-aware features to your app by getting the user's current location.">
-             Making Your App Location-Aware
-          </a>
-        </div>
-        <ul>
-          <li>
-            <a href="<?cs var:toroot ?>training/location/retrieve-current.html">
-            Getting the Last Known Location
-            </a>
-          </li>
-          <li>
-            <a href="<?cs var:toroot ?>training/location/receive-location-updates.html">
-            Receiving Location Updates
-            </a>
-          </li>
-          <li>
-            <a href="<?cs var:toroot ?>training/location/display-address.html">
-            Displaying a Location Address
-          </a>
-          </li>
-          <li><a href="<?cs var:toroot ?>training/location/geofencing.html">
-            Creating and Monitoring Geofences
-          </a>
-          </li>
-        </ul>
+        <a href="<?cs var:toroot ?>training/sign-in/index.html"
+           description="How to add user sign-in functionality to your app.">
+           Adding Sign-In
+        </a>
       </li>
     </ul>
   </li>
-  <!-- End privacy and location -->
+  <!-- End user info and sign-in -->
 
 
   <li class="nav-section">
@@ -1805,19 +1828,18 @@
           >Updating Your Security Provider to Protect Against SSL Exploits</a>
       </li>
 
-      <li class="nav-section">
-        <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>training/enterprise/index.html"
-             description=
-             "How to implement device management policies for enterprise-oriented apps."
-            >Developing for Enterprise</a>
-        </div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>training/enterprise/device-management-policy.html">
-            Enhancing Security with Device Management Policies
-          </a>
-          </li>
-        </ul>
+      <li>
+        <a href="<?cs var:toroot ?>training/safetynet/index.html"
+           description=
+           "How to use the SafetyNet service to analyze a device where your app is running
+            and get information about its compatibility with your app."
+          >Checking Device Compatibility with SafetyNet</a>
+      </li>
+
+      <li>
+        <a href="<?cs var:toroot ?>training/enterprise/device-management-policy.html"
+            description="How to create an application that enforces security policies on devices."
+            >Enhancing Security with Device Management Policies</a>
       </li>
     </ul>
   </li>
@@ -1959,21 +1981,6 @@
           </li>
         </ul>
       </li>
-      <li class="nav-section">
-        <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>training/monetization/index.html"
-             description=
-             "How to implement monetization strategies for your app without compromising
-             the user experience."
-            >Monetizing Your App</a>
-        </div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>training/monetization/ads-and-ux.html">
-            Advertising without Compromising User Experience
-          </a>
-          </li>
-        </ul>
-      </li>
     </ul>
   </li>
   <!-- End best Publishing -->
diff --git a/docs/html/training/tv/start/start.jd b/docs/html/training/tv/start/start.jd
index 0f5871f..e55e202 100644
--- a/docs/html/training/tv/start/start.jd
+++ b/docs/html/training/tv/start/start.jd
@@ -1,4 +1,4 @@
-page.title=Getting Started with TV Apps
+page.title=Get Started with TV Apps
 page.tags="leanback","recyclerview","launcher"
 
 trainingnavtop=true
diff --git a/docs/html/tv/index.jd b/docs/html/tv/index.jd
index e4d7f7a..7a0cdcc 100644
--- a/docs/html/tv/index.jd
+++ b/docs/html/tv/index.jd
@@ -1,6 +1,6 @@
 page.title=About Android TV
 page.type=about
-page.image=tv/images/hero.jpg
+page.image=images/cards/android-tv_2x.png
 page.viewport_width=970
 page.tags="tv", "leanback"
 page.metaDescription=Bring your apps, games, and content to the biggest screen in the house.
diff --git a/docs/html/wear/index.jd b/docs/html/wear/index.jd
index 14a9bbf..e18ada4 100644
--- a/docs/html/wear/index.jd
+++ b/docs/html/wear/index.jd
@@ -3,7 +3,7 @@
 fullpage=true
 no_footer_links=true
 page.type=about
-
+page.image=images/cards/android-wear_2x.png
 @jd:body
 
 <style>
@@ -74,7 +74,7 @@
     </div> <!-- end .landing-section .landing-hero -->
 
 
-    <div class="landing-rest-of-page" style="margin-top:80px">
+    <div class="landing-rest-of-page">
       <div class="landing-section" id="extending-android-to-wearables">
         <div class="wrap">
           <div class="landing-section-header">
diff --git a/docs/image_sources/preview/m-preview-timeline.svg b/docs/image_sources/preview/m-preview-timeline.svg
new file mode 100644
index 0000000..9670e77
--- /dev/null
+++ b/docs/image_sources/preview/m-preview-timeline.svg
@@ -0,0 +1,234 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="svg2"
+   height="744.09448"
+   width="1052.3622"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="m-preview-timeline.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1185"
+     inkscape:window-height="755"
+     id="namedview55"
+     showgrid="false"
+     inkscape:zoom="2.4151899"
+     inkscape:cx="365.39354"
+     inkscape:cy="453.57114"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <rect
+     y="340.58325"
+     x="782.31952"
+     height="5"
+     width="107.6871"
+     id="rect4170-2"
+     style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" />
+  <g
+     transform="translate(0,-308.2677)"
+     id="layer1">
+    <rect
+       y="649.00873"
+       x="25.750326"
+       height="5"
+       width="617.74329"
+       id="rect4170"
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" />
+    <rect
+       transform="scale(1,-1)"
+       y="-655.77258"
+       x="117.70681"
+       height="8.5310192"
+       width="532.54163"
+       id="rect2987"
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#99cc00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" />
+    <path
+       transform="translate(53.377673,246.4966)"
+       d="m 118.48638,404.74948 a 14.218366,14.218366 0 0 1 -14.21837,14.21837 14.218366,14.218366 0 0 1 -14.218363,-14.21837 14.218366,14.218366 0 0 1 14.218363,-14.21836 14.218366,14.218366 0 0 1 14.21837,14.21836 z"
+       id="path3757"
+       style="color:#000000;fill:#99cc00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+    <flowRoot
+       transform="translate(-9.180856,237.63686)"
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:36px;line-height:125%;font-family:Roboto;-inkscape-font-specification:'Roboto, Light';text-align:center;writing-mode:lr-tb;text-anchor:middle;display:inline;overflow:visible;visibility:visible;fill:#666666;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
+       id="flowRoot3759"
+       xml:space="preserve"><flowRegion
+         id="flowRegion3761"><rect
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:36px;line-height:125%;font-family:Roboto;-inkscape-font-specification:'Roboto, Light';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#666666"
+           y="260.83688"
+           x="50.939774"
+           height="135.3176"
+           width="155.34293"
+           id="rect3763" /></flowRegion><flowPara
+         id="flowPara3383">Preview 1</flowPara></flowRoot>    <path
+       transform="translate(279.50908,246.65479)"
+       d="m 118.48638,404.74948 a 14.218366,14.218366 0 0 1 -14.21837,14.21837 14.218366,14.218366 0 0 1 -14.218363,-14.21837 14.218366,14.218366 0 0 1 14.218363,-14.21836 14.218366,14.218366 0 0 1 14.21837,14.21836 z"
+       id="path3757-1"
+       style="color:#000000;fill:#99cc00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+    <path
+       transform="translate(505.64051,247.60268)"
+       d="m 118.48638,404.74948 a 14.218366,14.218366 0 0 1 -14.21837,14.21837 14.218366,14.218366 0 0 1 -14.218363,-14.21837 14.218366,14.218366 0 0 1 14.218363,-14.21836 14.218366,14.218366 0 0 1 14.21837,14.21836 z"
+       id="path3757-1-8"
+       style="color:#000000;fill:#99cc00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+    <flowRoot
+       transform="translate(-1.0121143,408.40861)"
+       style="font-size:36px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;color:#000000;fill:#666666;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Roboto;-inkscape-font-specification:Roboto Light"
+       id="flowRoot3759-2"
+       xml:space="preserve"><flowRegion
+         id="flowRegion3761-9"><rect
+           style="text-align:center;text-anchor:middle;fill:#666666"
+           y="260.83688"
+           x="50.939774"
+           height="51.644661"
+           width="80.11277"
+           id="rect3763-3" /></flowRegion><flowPara
+         id="flowPara3766-9"
+         style="text-align:center;text-anchor:middle;fill:#666666">May</flowPara></flowRoot>    <flowRoot
+       transform="translate(177.38621,408.98166)"
+       style="font-size:36px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;color:#000000;fill:#666666;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Roboto;-inkscape-font-specification:Roboto Light"
+       id="flowRoot3759-2-1"
+       xml:space="preserve"><flowRegion
+         id="flowRegion3761-9-4"><rect
+           style="text-align:center;text-anchor:middle;fill:#666666"
+           y="260.83688"
+           x="50.939774"
+           height="51.644661"
+           width="80.11277"
+           id="rect3763-3-3" /></flowRegion><flowPara
+         id="flowPara3766-9-1"
+         style="text-align:center;text-anchor:middle;fill:#666666">June</flowPara></flowRoot>    <flowRoot
+       transform="translate(406.04158,409.3565)"
+       style="font-size:36px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;color:#000000;fill:#666666;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Roboto;-inkscape-font-specification:Roboto Light"
+       id="flowRoot3759-2-1-2"
+       xml:space="preserve"><flowRegion
+         id="flowRegion3761-9-4-5"><rect
+           style="text-align:center;text-anchor:middle;fill:#666666"
+           y="260.83688"
+           x="50.939774"
+           height="51.644661"
+           width="80.11277"
+           id="rect3763-3-3-1" /></flowRegion><flowPara
+         id="flowPara3766-9-1-3"
+         style="text-align:center;text-anchor:middle;fill:#666666">July</flowPara></flowRoot>    <flowRoot
+       transform="translate(672.0263,409.3565)"
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:36px;line-height:125%;font-family:Roboto;-inkscape-font-specification:'Roboto, Light';text-align:center;writing-mode:lr-tb;text-anchor:middle;display:inline;overflow:visible;visibility:visible;fill:#666666;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
+       id="flowRoot3759-2-1-2-6"
+       xml:space="preserve"><flowRegion
+         id="flowRegion3761-9-4-5-0"><rect
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:36px;line-height:125%;font-family:Roboto;-inkscape-font-specification:'Roboto, Light';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#666666;fill-opacity:1"
+           y="260.83688"
+           x="50.939774"
+           height="51.644653"
+           width="135.78827"
+           id="rect3763-3-3-1-1" /></flowRegion><flowPara
+         id="flowPara4380">2015 Q3</flowPara></flowRoot>    <path
+       id="path4048"
+       d="m 119.47195,546.39546 c 0,93.40673 0,93.40673 0,93.40673"
+       style="fill:#666666;stroke:#000000;stroke-width:1.96750557px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <flowRoot
+       transform="translate(637.68275,236.45687)"
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:36px;line-height:125%;font-family:Roboto;-inkscape-font-specification:'Roboto, Light';text-align:center;writing-mode:lr-tb;text-anchor:middle;display:inline;overflow:visible;visibility:visible;fill:#666666;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
+       id="flowRoot3759-8-3-0"
+       xml:space="preserve"><flowRegion
+         id="flowRegion3761-2-2-4"><rect
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:36px;line-height:125%;font-family:Roboto;-inkscape-font-specification:'Roboto, Light';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#666666"
+           y="260.83688"
+           x="50.939774"
+           height="86.562103"
+           width="270.41403"
+           id="rect3763-4-5-9" /></flowRegion><flowPara
+         id="flowPara3388">Final Release</flowPara></flowRoot>    <rect
+       transform="scale(1,-1)"
+       y="-655.4176"
+       x="684.83575"
+       height="8.5310192"
+       width="12.470854"
+       id="rect2987-8"
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#99cc00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" />
+    <rect
+       transform="scale(1,-1)"
+       y="-655.85944"
+       x="756.41724"
+       height="8.5310192"
+       width="64.610497"
+       id="rect2987-8-4"
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#99cc00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" />
+    <rect
+       transform="scale(1,-1)"
+       y="-655.4176"
+       x="661.85895"
+       height="8.5310192"
+       width="12.470854"
+       id="rect2987-8-3"
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#99cc00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" />
+    <rect
+       transform="scale(1,-1)"
+       y="-655.4176"
+       x="730.78931"
+       height="8.5310192"
+       width="12.470854"
+       id="rect2987-8-42"
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#99cc00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" />
+    <rect
+       transform="scale(1,-1)"
+       y="-655.4176"
+       x="707.8125"
+       height="8.5310192"
+       width="12.470854"
+       id="rect2987-8-3-3"
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#99cc00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" />
+    <flowRoot
+       transform="translate(220.84514,238.95361)"
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:36px;line-height:125%;font-family:Roboto;-inkscape-font-specification:'Roboto, Light';text-align:center;writing-mode:lr-tb;text-anchor:middle;display:inline;overflow:visible;visibility:visible;fill:#666666;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
+       id="flowRoot3759-24"
+       xml:space="preserve"><flowRegion
+         id="flowRegion3761-7"><rect
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:36px;line-height:125%;font-family:Roboto;-inkscape-font-specification:'Roboto, Light';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#666666"
+           y="260.83688"
+           x="50.939774"
+           height="135.3176"
+           width="155.34293"
+           id="rect3763-8" /></flowRegion><flowPara
+         id="flowPara3383-3">Preview 2</flowPara></flowRoot>    <flowRoot
+       transform="translate(447.44248,238.95361)"
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:36px;line-height:125%;font-family:Roboto;-inkscape-font-specification:'Roboto, Light';text-align:center;writing-mode:lr-tb;text-anchor:middle;display:inline;overflow:visible;visibility:visible;fill:#666666;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
+       id="flowRoot3759-1"
+       xml:space="preserve"><flowRegion
+         id="flowRegion3761-99"><rect
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:36px;line-height:125%;font-family:Roboto;-inkscape-font-specification:'Roboto, Light';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#666666"
+           y="260.83688"
+           x="50.939774"
+           height="135.3176"
+           width="155.34293"
+           id="rect3763-7" /></flowRegion><flowPara
+         id="flowPara3383-38">Preview 3</flowPara></flowRoot>  </g>
+</svg>