diff --git a/ui/activitytasks/DocumentCentricRecents/Application/.gitignore b/ui/activitytasks/DocumentCentricApps/Application/.gitignore
similarity index 100%
rename from ui/activitytasks/DocumentCentricRecents/Application/.gitignore
rename to ui/activitytasks/DocumentCentricApps/Application/.gitignore
diff --git a/ui/activitytasks/DocumentCentricRecents/Application/proguard-project.txt b/ui/activitytasks/DocumentCentricApps/Application/proguard-project.txt
similarity index 100%
rename from ui/activitytasks/DocumentCentricRecents/Application/proguard-project.txt
rename to ui/activitytasks/DocumentCentricApps/Application/proguard-project.txt
diff --git a/ui/activitytasks/DocumentCentricRecents/Application/src/main/AndroidManifest.xml b/ui/activitytasks/DocumentCentricApps/Application/src/main/AndroidManifest.xml
similarity index 84%
rename from ui/activitytasks/DocumentCentricRecents/Application/src/main/AndroidManifest.xml
rename to ui/activitytasks/DocumentCentricApps/Application/src/main/AndroidManifest.xml
index 71ac7d0..a1378ef 100644
--- a/ui/activitytasks/DocumentCentricRecents/Application/src/main/AndroidManifest.xml
+++ b/ui/activitytasks/DocumentCentricApps/Application/src/main/AndroidManifest.xml
@@ -16,18 +16,16 @@
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.documentcentricrecents"
+    package="com.example.android.documentcentricapps"
     android:versionCode="1"
     android:versionName="1.0">
 
-    <uses-sdk android:minSdkVersion="android-L" android:targetSdkVersion="android-L" />
-
     <application android:allowBackup="true"
         android:label="@string/app_name"
         android:icon="@drawable/ic_launcher"
         android:theme="@style/AppTheme">
 
-        <activity android:name=".DocumentCentricActivity"
+        <activity android:name="com.example.android.documentcentricapps.DocumentCentricActivity"
                   android:label="@string/app_name"
                   android:persistableMode="persistAcrossReboots">
             <intent-filter>
@@ -36,7 +34,7 @@
             </intent-filter>
         </activity>
         <activity
-            android:name=".NewDocumentActivity"
+            android:name="com.example.android.documentcentricapps.NewDocumentActivity"
             android:label="@string/activity_new_document_title" >
         </activity>
     </application>
diff --git a/ui/activitytasks/DocumentCentricRecents/Application/src/main/java/com/example/android/documentcentricrecents/DocumentCentricActivity.java b/ui/activitytasks/DocumentCentricApps/Application/src/main/java/com/example/android/documentcentricapps/DocumentCentricActivity.java
similarity index 93%
rename from ui/activitytasks/DocumentCentricRecents/Application/src/main/java/com/example/android/documentcentricrecents/DocumentCentricActivity.java
rename to ui/activitytasks/DocumentCentricApps/Application/src/main/java/com/example/android/documentcentricapps/DocumentCentricActivity.java
index 1d2dcee..92b5b43 100644
--- a/ui/activitytasks/DocumentCentricRecents/Application/src/main/java/com/example/android/documentcentricrecents/DocumentCentricActivity.java
+++ b/ui/activitytasks/DocumentCentricApps/Application/src/main/java/com/example/android/documentcentricapps/DocumentCentricActivity.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.android.documentcentricrecents;
+package com.example.android.documentcentricapps;
 
 import android.app.Activity;
 import android.content.Intent;
@@ -25,7 +25,7 @@
 import android.widget.CheckBox;
 
 /**
- * DocumentCentricActivity shows the basic usage of the new Document-Centric Recents API. The new
+ * DocumentCentricActivity shows the basic usage of the new Document-Centric Apps API. The new
  * API modifies the meaning of the {@link Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET} flag, which is
  * now deprecated. In versions before L it serves to define a boundary between the main task and a
  * subtask. The subtask holds a different thumbnail and all activities in it are finished when the
@@ -56,7 +56,7 @@
     }
 
     @Override
-    protected void onPostCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
+    public void onPostCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
         super.onPostCreate(savedInstanceState, persistentState);
         // Restore state from PersistableBundle
         if (persistentState != null) {
@@ -65,7 +65,7 @@
     }
 
     @Override
-    protected void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
+    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
         /*
         To maintain activity state across reboots the system saves and restore critical information for
         all tasks and their activities. Information known by the system includes the activity stack order,
@@ -94,7 +94,8 @@
 
 
     /**
-     * Returns an new {@link Intent} to start {@link NewDocumentActivity} as a new document in recents.
+     * Returns an new {@link Intent} to start {@link NewDocumentActivity} as a new document in
+     * overview menu.
      *
      * To start a new document task {@link Intent#FLAG_ACTIVITY_NEW_DOCUMENT} must be used. The
      * system will search through existing tasks for one whose Intent matches the Intent component
diff --git a/ui/activitytasks/DocumentCentricRecents/Application/src/main/java/com/example/android/documentcentricrecents/NewDocumentActivity.java b/ui/activitytasks/DocumentCentricApps/Application/src/main/java/com/example/android/documentcentricapps/NewDocumentActivity.java
similarity index 88%
rename from ui/activitytasks/DocumentCentricRecents/Application/src/main/java/com/example/android/documentcentricrecents/NewDocumentActivity.java
rename to ui/activitytasks/DocumentCentricApps/Application/src/main/java/com/example/android/documentcentricapps/NewDocumentActivity.java
index c94ad34..ac5e4f3 100644
--- a/ui/activitytasks/DocumentCentricRecents/Application/src/main/java/com/example/android/documentcentricrecents/NewDocumentActivity.java
+++ b/ui/activitytasks/DocumentCentricApps/Application/src/main/java/com/example/android/documentcentricapps/NewDocumentActivity.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.android.documentcentricrecents;
+package com.example.android.documentcentricapps;
 
 import android.app.Activity;
 import android.content.Intent;
@@ -23,7 +23,7 @@
 import android.widget.TextView;
 
 /**
- * Represents a "document" in the new recents notion. This is just a placeholder.
+ * Represents a "document" in the new overview notion. This is just a placeholder.
  * Real world examples of this could be:
  *
  * <ul>
@@ -59,8 +59,8 @@
         setDocumentCounterText(R.string.reusing_document_counter);
     }
 
-    public void onRemoveFromRecents(View view) {
-        // It is good pratice to remove a document from the recents stack if not needed anymore.
+    public void onRemoveFromOverview(View view) {
+        // It is good pratice to remove a document from the overview stack if not needed anymore.
         finishAndRemoveTask();
     }
 
diff --git a/ui/activitytasks/DocumentCentricRecents/Application/src/main/res/drawable-hdpi/ic_launcher.png b/ui/activitytasks/DocumentCentricApps/Application/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from ui/activitytasks/DocumentCentricRecents/Application/src/main/res/drawable-hdpi/ic_launcher.png
rename to ui/activitytasks/DocumentCentricApps/Application/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/activitytasks/DocumentCentricRecents/Application/src/main/res/drawable-mdpi/ic_launcher.png b/ui/activitytasks/DocumentCentricApps/Application/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from ui/activitytasks/DocumentCentricRecents/Application/src/main/res/drawable-mdpi/ic_launcher.png
rename to ui/activitytasks/DocumentCentricApps/Application/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/activitytasks/DocumentCentricRecents/Application/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/activitytasks/DocumentCentricApps/Application/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from ui/activitytasks/DocumentCentricRecents/Application/src/main/res/drawable-xhdpi/ic_launcher.png
rename to ui/activitytasks/DocumentCentricApps/Application/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/activitytasks/DocumentCentricRecents/Application/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/activitytasks/DocumentCentricApps/Application/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from ui/activitytasks/DocumentCentricRecents/Application/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to ui/activitytasks/DocumentCentricApps/Application/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/activitytasks/DocumentCentricRecents/Application/src/main/res/layout/activity_document_centric_main.xml b/ui/activitytasks/DocumentCentricApps/Application/src/main/res/layout/activity_document_centric_main.xml
similarity index 100%
rename from ui/activitytasks/DocumentCentricRecents/Application/src/main/res/layout/activity_document_centric_main.xml
rename to ui/activitytasks/DocumentCentricApps/Application/src/main/res/layout/activity_document_centric_main.xml
diff --git a/ui/activitytasks/DocumentCentricRecents/Application/src/main/res/layout/activity_new_document.xml b/ui/activitytasks/DocumentCentricApps/Application/src/main/res/layout/activity_new_document.xml
similarity index 96%
rename from ui/activitytasks/DocumentCentricRecents/Application/src/main/res/layout/activity_new_document.xml
rename to ui/activitytasks/DocumentCentricApps/Application/src/main/res/layout/activity_new_document.xml
index 3dc7a4a..2a6c58a 100644
--- a/ui/activitytasks/DocumentCentricRecents/Application/src/main/res/layout/activity_new_document.xml
+++ b/ui/activitytasks/DocumentCentricApps/Application/src/main/res/layout/activity_new_document.xml
@@ -36,6 +36,6 @@
         android:layout_marginTop="@dimen/margin_small"
         android:layout_marginLeft="@dimen/margin_small"
         android:text="@string/remove_task_button_text"
-        android:onClick="onRemoveFromRecents" />
+        android:onClick="onRemoveFromOverview" />
 
 </LinearLayout>
diff --git a/ui/activitytasks/DocumentCentricRecents/Application/src/main/res/values/dimens.xml b/ui/activitytasks/DocumentCentricApps/Application/src/main/res/values/dimens.xml
similarity index 100%
rename from ui/activitytasks/DocumentCentricRecents/Application/src/main/res/values/dimens.xml
rename to ui/activitytasks/DocumentCentricApps/Application/src/main/res/values/dimens.xml
diff --git a/ui/activitytasks/DocumentCentricRecents/Application/src/main/res/values/strings.xml b/ui/activitytasks/DocumentCentricApps/Application/src/main/res/values/strings.xml
similarity index 93%
rename from ui/activitytasks/DocumentCentricRecents/Application/src/main/res/values/strings.xml
rename to ui/activitytasks/DocumentCentricApps/Application/src/main/res/values/strings.xml
index 56f801f..5f0e3f0 100644
--- a/ui/activitytasks/DocumentCentricRecents/Application/src/main/res/values/strings.xml
+++ b/ui/activitytasks/DocumentCentricApps/Application/src/main/res/values/strings.xml
@@ -23,6 +23,6 @@
     <string name="activity_new_document_title">DocumentActivity</string>
     <string name="new_document_button_text">Create new document</string>
     <string name="multiple_task_checkbox_label">Task per document</string>
-    <string name="remove_task_button_text">Remove from Recents</string>
+    <string name="remove_task_button_text">Remove from Overview</string>
 
 </resources>
diff --git a/ui/activitytasks/DocumentCentricRecents/Application/tests/src/com/example/android/documentcentricrecents/tests/DocumentCentricRecentsInstrumentationTest.java b/ui/activitytasks/DocumentCentricApps/Application/tests/src/com/example/android/documentcentricapps/tests/DocumentCentricAppsInstrumentationTest.java
similarity index 81%
rename from ui/activitytasks/DocumentCentricRecents/Application/tests/src/com/example/android/documentcentricrecents/tests/DocumentCentricRecentsInstrumentationTest.java
rename to ui/activitytasks/DocumentCentricApps/Application/tests/src/com/example/android/documentcentricapps/tests/DocumentCentricAppsInstrumentationTest.java
index 3c17059..3701f22 100644
--- a/ui/activitytasks/DocumentCentricRecents/Application/tests/src/com/example/android/documentcentricrecents/tests/DocumentCentricRecentsInstrumentationTest.java
+++ b/ui/activitytasks/DocumentCentricApps/Application/tests/src/com/example/android/documentcentricapps/tests/DocumentCentricAppsInstrumentationTest.java
@@ -14,10 +14,10 @@
 * limitations under the License.
 */
 
-package com.example.android.documentcentricrecents.tests;
+package com.example.android.documentcentricapps.tests;
 
-import com.example.android.documentcentricrecents.DocumentCentricActivity;
-import com.example.android.documentcentricrecents.R;
+import com.example.android.documentcentricapps.DocumentCentricActivity;
+import com.example.android.documentcentricapps.R;
 
 import android.app.ActivityManager;
 import android.content.Context;
@@ -29,15 +29,15 @@
 import java.util.List;
 
 /**
- * Instrumentation tests for DocumentCentricRecents sample.
+ * Instrumentation tests for DocumentCentricApps sample.
  */
 @LargeTest
-public class DocumentCentricRecentsInstrumentationTest extends
+public class DocumentCentricAppsInstrumentationTest extends
         ActivityInstrumentationTestCase2<DocumentCentricActivity> {
 
     private DocumentCentricActivity mDocumentCentricActivity;
 
-    public DocumentCentricRecentsInstrumentationTest() {
+    public DocumentCentricAppsInstrumentationTest() {
         super(DocumentCentricActivity.class);
     }
 
@@ -47,7 +47,7 @@
         mDocumentCentricActivity = getActivity();
     }
 
-    public void testNewDocument_CreatesRecentsEntry() {
+    public void testNewDocument_CreatesOverviewEntry() {
         // Given a initialized Activity
         assertNotNull("mDocumentCentricActivity is null", mDocumentCentricActivity);
         final Button createNewDocumentButton = (Button) mDocumentCentricActivity
@@ -57,7 +57,7 @@
         // When "Create new Document" Button is clicked
         TouchUtils.clickView(this, createNewDocumentButton);
 
-        // Then a entry in recent app tasks is created.
+        // Then a entry in overview app tasks is created.
         List<ActivityManager.AppTask> recentAppTasks = getRecentAppTasks();
         assertEquals("# of recentAppTasks does not match", 2, recentAppTasks.size());
     }
diff --git a/ui/activitytasks/DocumentCentricRecents/Application/tests/src/com/example/android/documentcentricrecents/tests/DocumentCentricRecentsUnitTest.java b/ui/activitytasks/DocumentCentricApps/Application/tests/src/com/example/android/documentcentricapps/tests/DocumentCentricAppsUnitTest.java
similarity index 87%
rename from ui/activitytasks/DocumentCentricRecents/Application/tests/src/com/example/android/documentcentricrecents/tests/DocumentCentricRecentsUnitTest.java
rename to ui/activitytasks/DocumentCentricApps/Application/tests/src/com/example/android/documentcentricapps/tests/DocumentCentricAppsUnitTest.java
index 4c13002..b3da974 100644
--- a/ui/activitytasks/DocumentCentricRecents/Application/tests/src/com/example/android/documentcentricrecents/tests/DocumentCentricRecentsUnitTest.java
+++ b/ui/activitytasks/DocumentCentricApps/Application/tests/src/com/example/android/documentcentricapps/tests/DocumentCentricAppsUnitTest.java
@@ -14,28 +14,26 @@
 * limitations under the License.
 */
 
-package com.example.android.documentcentricrecents.tests;
+package com.example.android.documentcentricapps.tests;
 
-import com.example.android.documentcentricrecents.DocumentCentricActivity;
-import com.example.android.documentcentricrecents.R;
+import com.example.android.documentcentricapps.DocumentCentricActivity;
+import com.example.android.documentcentricapps.R;
 
 import android.content.Intent;
 import android.test.ActivityUnitTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
 import android.test.suitebuilder.annotation.MediumTest;
-import android.util.Log;
 import android.widget.Button;
 import android.widget.CheckBox;
 
 /**
- * Unit tests for DocumentCentricRecents sample.
+ * Unit tests for DocumentCentricApps sample.
  */
 @MediumTest
-public class DocumentCentricRecentsUnitTest extends ActivityUnitTestCase<DocumentCentricActivity> {
+public class DocumentCentricAppsUnitTest extends ActivityUnitTestCase<DocumentCentricActivity> {
 
     private DocumentCentricActivity mDocumentCentricActivity;
 
-    public DocumentCentricRecentsUnitTest() {
+    public DocumentCentricAppsUnitTest() {
         super(DocumentCentricActivity.class);
     }
 
diff --git a/ui/activitytasks/DocumentCentricApps/CONTRIB.md b/ui/activitytasks/DocumentCentricApps/CONTRIB.md
new file mode 100644
index 0000000..14a4fcf
--- /dev/null
+++ b/ui/activitytasks/DocumentCentricApps/CONTRIB.md
@@ -0,0 +1,35 @@
+# How to become a contributor and submit your own code
+
+## Contributor License Agreements
+
+We'd love to accept your sample apps and patches! Before we can take them, we
+have to jump a couple of legal hurdles.
+
+Please fill out either the individual or corporate Contributor License Agreement (CLA).
+
+  * If you are an individual writing original source code and you're sure you
+    own the intellectual property, then you'll need to sign an [individual CLA]
+    (https://developers.google.com/open-source/cla/individual).
+  * If you work for a company that wants to allow you to contribute your work,
+    then you'll need to sign a [corporate CLA]
+    (https://developers.google.com/open-source/cla/corporate).
+
+Follow either of the two links above to access the appropriate CLA and
+instructions for how to sign and return it. Once we receive it, we'll be able to
+accept your pull requests.
+
+## Contributing A Patch
+
+1. Submit an issue describing your proposed change to the repo in question.
+1. The repo owner will respond to your issue promptly.
+1. If your proposed change is accepted, and you haven't already done so, sign a
+   Contributor License Agreement (see details above).
+1. Fork the desired repo, develop and test your code changes.
+1. Ensure that your code adheres to the existing style in the sample to which
+   you are contributing. Refer to the
+   [Android Code Style Guide]
+   (https://source.android.com/source/code-style.html) for the
+   recommended coding standards for this organization.
+1. Ensure that your code has an appropriate set of unit tests which all pass.
+1. Submit a pull request.
+
diff --git a/ui/activitytasks/DocumentCentricApps/LICENSE b/ui/activitytasks/DocumentCentricApps/LICENSE
new file mode 100644
index 0000000..1af981f
--- /dev/null
+++ b/ui/activitytasks/DocumentCentricApps/LICENSE
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2014 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/ui/activitytasks/DocumentCentricRecents/build.gradle b/ui/activitytasks/DocumentCentricApps/build.gradle
similarity index 100%
rename from ui/activitytasks/DocumentCentricRecents/build.gradle
rename to ui/activitytasks/DocumentCentricApps/build.gradle
diff --git a/ui/activitytasks/DocumentCentricRecents/buildSrc/build.gradle b/ui/activitytasks/DocumentCentricApps/buildSrc/build.gradle
similarity index 100%
rename from ui/activitytasks/DocumentCentricRecents/buildSrc/build.gradle
rename to ui/activitytasks/DocumentCentricApps/buildSrc/build.gradle
diff --git a/ui/activitytasks/DocumentCentricRecents/gradle/wrapper/gradle-wrapper.jar b/ui/activitytasks/DocumentCentricApps/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from ui/activitytasks/DocumentCentricRecents/gradle/wrapper/gradle-wrapper.jar
rename to ui/activitytasks/DocumentCentricApps/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/ui/activitytasks/DocumentCentricRecents/gradle/wrapper/gradle-wrapper.properties b/ui/activitytasks/DocumentCentricApps/gradle/wrapper/gradle-wrapper.properties
similarity index 100%
rename from ui/activitytasks/DocumentCentricRecents/gradle/wrapper/gradle-wrapper.properties
rename to ui/activitytasks/DocumentCentricApps/gradle/wrapper/gradle-wrapper.properties
diff --git a/ui/activitytasks/DocumentCentricRecents/gradlew b/ui/activitytasks/DocumentCentricApps/gradlew
similarity index 100%
rename from ui/activitytasks/DocumentCentricRecents/gradlew
rename to ui/activitytasks/DocumentCentricApps/gradlew
diff --git a/ui/activitytasks/DocumentCentricRecents/gradlew.bat b/ui/activitytasks/DocumentCentricApps/gradlew.bat
similarity index 100%
rename from ui/activitytasks/DocumentCentricRecents/gradlew.bat
rename to ui/activitytasks/DocumentCentricApps/gradlew.bat
diff --git a/ui/activitytasks/DocumentCentricRecents/settings.gradle b/ui/activitytasks/DocumentCentricApps/settings.gradle
similarity index 100%
rename from ui/activitytasks/DocumentCentricRecents/settings.gradle
rename to ui/activitytasks/DocumentCentricApps/settings.gradle
diff --git a/ui/activitytasks/DocumentCentricRecents/template-params.xml b/ui/activitytasks/DocumentCentricApps/template-params.xml
similarity index 81%
rename from ui/activitytasks/DocumentCentricRecents/template-params.xml
rename to ui/activitytasks/DocumentCentricApps/template-params.xml
index d83182e..589e9f1 100644
--- a/ui/activitytasks/DocumentCentricRecents/template-params.xml
+++ b/ui/activitytasks/DocumentCentricApps/template-params.xml
@@ -20,7 +20,7 @@
 <sample>
     <name>DocumentCentricRecents</name>
     <group>UI</group>
-    <package>com.example.android.documentcentricrecents</package>
+    <package>com.example.android.documentcentricapps</package>
 
     <!-- change minSdk if needed-->
     <minSdk>21</minSdk>
@@ -28,10 +28,10 @@
     <strings>
         <intro>
             <![CDATA[
-            This sample shows the basic usage of the new \"Document Centric Recents\" API.
-            It let\'s you create new documents in the recents history and persists its
+            This sample shows the basic usage of the new \"Document Centric Apps\" API.
+            It let\'s you create new documents in the system overview menu and persists its
             state through reboots. If \"Task per document\" is checked a new task will be
-            created for every new document in recents.
+            created for every new document in the overview menu.
             ]]>
         </intro>
     </strings>
