diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/service/UtilityService.java b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/service/UtilityService.java
index bf04fcf..4112a65 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/service/UtilityService.java
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/service/UtilityService.java
@@ -355,7 +355,7 @@
                 .setLocalOnly(microApp)
                 .setContentTitle(attraction.name)
                 .setContentText(getString(R.string.nearby_attraction))
-                .setSmallIcon(R.drawable.ic_stat_icon)
+                .setSmallIcon(R.drawable.ic_stat_maps_pin_drop)
                 .setContentIntent(pendingIntent)
                 .setDeleteIntent(deletePendingIntent)
                 .setColor(getResources().getColor(R.color.colorPrimary))
@@ -376,7 +376,7 @@
                 pages.add(new NotificationCompat.Builder(this)
                         .setContentTitle(attractions.get(i).name)
                         .setContentText(distance)
-                        .setSmallIcon(R.drawable.ic_stat_icon)
+                        .setSmallIcon(R.drawable.ic_stat_maps_pin_drop)
                         .extend(new NotificationCompat.WearableExtender()
                                 .setBackground(bitmaps.get(attractions.get(i).name))
                         )
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListActivity.java b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListActivity.java
index 4bbfcab..8d43112 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListActivity.java
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListActivity.java
@@ -16,6 +16,7 @@
 
 package com.example.android.xyztouristattractions.ui;
 
+import android.app.AlertDialog;
 import android.os.Bundle;
 import android.support.v7.app.ActionBarActivity;
 import android.view.Menu;
@@ -67,9 +68,13 @@
         switch (item.getItemId()) {
             case R.id.test_notification:
                 UtilityService.triggerWearTest(this, false);
+                showDebugDialog(R.string.action_test_notification,
+                        R.string.action_test_notification_dialog);
                 return true;
             case R.id.test_microapp:
                 UtilityService.triggerWearTest(this, true);
+                showDebugDialog(R.string.action_test_microapp,
+                        R.string.action_test_microapp_dialog);
                 return true;
             case R.id.test_toggle_geofence:
                 boolean geofenceEnabled = Utils.getGeofenceEnabled(this);
@@ -81,4 +86,16 @@
         }
         return super.onOptionsItemSelected(item);
     }
+
+    /**
+     * Show a basic debug dialog to provide more info on the built-in debug
+     * options.
+     */
+    private void showDebugDialog(int titleResId, int bodyResId) {
+        AlertDialog.Builder builder = new AlertDialog.Builder(this)
+                .setTitle(titleResId)
+                .setMessage(bodyResId)
+                .setPositiveButton(android.R.string.ok, null);
+        builder.create().show();
+    }
 }
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-hdpi/ic_action_map.png b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-hdpi/ic_action_map.png
new file mode 100755
index 0000000..b478e43
--- /dev/null
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-hdpi/ic_action_map.png
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-hdpi/ic_stat_icon.png b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-hdpi/ic_stat_icon.png
deleted file mode 100644
index a13c449..0000000
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-hdpi/ic_stat_icon.png
+++ /dev/null
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-hdpi/ic_stat_maps_pin_drop.png b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-hdpi/ic_stat_maps_pin_drop.png
new file mode 100755
index 0000000..78821eb
--- /dev/null
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-hdpi/ic_stat_maps_pin_drop.png
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-mdpi/ic_action_map.png b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-mdpi/ic_action_map.png
new file mode 100755
index 0000000..0bfa259
--- /dev/null
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-mdpi/ic_action_map.png
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-mdpi/ic_stat_icon.png b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-mdpi/ic_stat_icon.png
deleted file mode 100644
index fd79493..0000000
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-mdpi/ic_stat_icon.png
+++ /dev/null
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-mdpi/ic_stat_maps_pin_drop.png b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-mdpi/ic_stat_maps_pin_drop.png
new file mode 100755
index 0000000..f7f0dce
--- /dev/null
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-mdpi/ic_stat_maps_pin_drop.png
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xhdpi/ic_action_map.png b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xhdpi/ic_action_map.png
new file mode 100755
index 0000000..23468bb
--- /dev/null
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xhdpi/ic_action_map.png
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xhdpi/ic_stat_icon.png b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xhdpi/ic_stat_icon.png
deleted file mode 100644
index 3893e7e..0000000
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xhdpi/ic_stat_icon.png
+++ /dev/null
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xhdpi/ic_stat_maps_pin_drop.png b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xhdpi/ic_stat_maps_pin_drop.png
new file mode 100755
index 0000000..6abaad0
--- /dev/null
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xhdpi/ic_stat_maps_pin_drop.png
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xxhdpi/ic_action_map.png b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xxhdpi/ic_action_map.png
old mode 100644
new mode 100755
index ddac35d..9ce29d1
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xxhdpi/ic_action_map.png
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xxhdpi/ic_action_map.png
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xxhdpi/ic_stat_icon.png b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xxhdpi/ic_stat_icon.png
deleted file mode 100644
index 0b0a76c..0000000
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xxhdpi/ic_stat_icon.png
+++ /dev/null
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xxhdpi/ic_stat_maps_pin_drop.png b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xxhdpi/ic_stat_maps_pin_drop.png
new file mode 100755
index 0000000..1e523e6
--- /dev/null
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/drawable-xxhdpi/ic_stat_maps_pin_drop.png
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/list_row.xml b/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/list_row.xml
index bb719d8..25f55d0 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/list_row.xml
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/list_row.xml
@@ -19,7 +19,7 @@
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
-    android:foreground="?android:attr/selectableItemBackground"
+    android:foreground="?attr/selectableItemBackground"
     android:layout_height="@dimen/image_size">
 
     <RelativeLayout
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-hdpi/ic_launcher.png b/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-hdpi/ic_launcher.png
index 45e7a43..d159cbe 100755
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-hdpi/ic_launcher.png
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-mdpi/ic_launcher.png b/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-mdpi/ic_launcher.png
index d94f86f..cae9b67 100755
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-mdpi/ic_launcher.png
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-xhdpi/ic_launcher.png b/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-xhdpi/ic_launcher.png
index 61e67d6..cc42dd2 100755
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-xhdpi/ic_launcher.png
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-xxhdpi/ic_launcher.png b/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-xxhdpi/ic_launcher.png
index 3fb154d..a84fd3a 100755
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-xxhdpi/ic_launcher.png
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index bd81bc1..f596c5c 100755
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-xxxhdpi/ic_launcher.png
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/values/strings.xml b/wearable/wear/XYZTouristAttractions/Application/src/main/res/values/strings.xml
index c93e9dc..5f3ee14 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/values/strings.xml
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/values/strings.xml
@@ -20,7 +20,29 @@
     <string name="empty_list">No attractions found nearby!</string>
     <string name="nearby_attraction">Nearby tourist attraction</string>
     <string name="action_test_notification">Test Notification</string>
+    <string name="action_test_notification_dialog">
+<![CDATA[
+This will trigger a rich notification that is bridged over to the Wear device.
+\n\nNote that the first time this runs it can take 20-30 seconds to transfer
+the image data (in practice, users wouldn\'t notice this as the notification
+would be triggered automatically and only show up after the data was
+transferred).
+]]>
+    </string>
     <string name="action_test_microapp">Test Micro App</string>
+    <string name="action_test_microapp_dialog">
+<![CDATA[
+This will trigger a notification on Wear that lets you open up the full
+wearable app. A few things to note:\n\n
+• Ensure you have the wearable APK installed on your Wear device (debug builds
+require you to install it manually)\n\n
+• The first time this runs it can take 20-30 seconds to transfer the image
+data (in practice, users wouldn\'t notice this as the notification would only
+be triggered after the data was transferred)\n\n
+• The notification priority is set to the recommended default value so it may
+appear further down your stream
+]]>
+    </string>
     <string name="action_test_toggle_geofence">Toggle Geofence Trigger</string>
     <string name="action_map">Show on Map</string>
 
diff --git a/wearable/wear/XYZTouristAttractions/LICENSE b/wearable/wear/XYZTouristAttractions/LICENSE
deleted file mode 100644
index 1af981f..0000000
--- a/wearable/wear/XYZTouristAttractions/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 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/wearable/wear/XYZTouristAttractions/Wearable/src/main/AndroidManifest.xml b/wearable/wear/XYZTouristAttractions/Wearable/src/main/AndroidManifest.xml
index 36749d1..24328b3 100644
--- a/wearable/wear/XYZTouristAttractions/Wearable/src/main/AndroidManifest.xml
+++ b/wearable/wear/XYZTouristAttractions/Wearable/src/main/AndroidManifest.xml
@@ -26,7 +26,7 @@
 
     <application
         android:allowBackup="true"
-        android:icon="@drawable/ic_launcher"
+        android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
         android:theme="@android:style/Theme.DeviceDefault" >
 
@@ -35,13 +35,7 @@
             android:exported="true"
             android:allowEmbedded="true"
             android:taskAffinity=""
-            android:label="@string/app_name" >
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
+            android:label="@string/app_name" />
 
         <activity
             android:name="android.support.wearable.activity.ConfirmationActivity"
diff --git a/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-hdpi/ic_full_directions_walking.png b/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-hdpi/ic_full_directions_walking.png
new file mode 100644
index 0000000..fdf7888
--- /dev/null
+++ b/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-hdpi/ic_full_directions_walking.png
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-hdpi/ic_full_open_on_device.png b/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-hdpi/ic_full_open_on_device.png
new file mode 100644
index 0000000..4e11601
--- /dev/null
+++ b/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-hdpi/ic_full_open_on_device.png
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-hdpi/ic_launcher.png b/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
deleted file mode 100755
index 45e7a43..0000000
--- a/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-hdpi/ic_result_open.png b/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-hdpi/ic_result_open.png
deleted file mode 100644
index db8af57..0000000
--- a/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-hdpi/ic_result_open.png
+++ /dev/null
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-xhdpi/ic_full_openonphone.png b/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-xhdpi/ic_full_openonphone.png
deleted file mode 100644
index 19c21e1..0000000
--- a/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-xhdpi/ic_full_openonphone.png
+++ /dev/null
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png b/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
deleted file mode 100755
index 61e67d6..0000000
--- a/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-xhdpi/ic_result_open.png b/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-xhdpi/ic_result_open.png
deleted file mode 100644
index 7d3c785..0000000
--- a/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-xhdpi/ic_result_open.png
+++ /dev/null
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-xxhdpi/ic_full_explore.png b/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-xxhdpi/ic_full_explore.png
deleted file mode 100644
index 82894b3..0000000
--- a/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-xxhdpi/ic_full_explore.png
+++ /dev/null
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png b/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
deleted file mode 100755
index 3fb154d..0000000
--- a/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/mipmap-hdpi/ic_launcher.png b/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100755
index 0000000..d159cbe
--- /dev/null
+++ b/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/mipmap-xhdpi/ic_launcher.png b/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100755
index 0000000..cc42dd2
--- /dev/null
+++ b/wearable/wear/XYZTouristAttractions/Wearable/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/screenshots/icon-web.png b/wearable/wear/XYZTouristAttractions/screenshots/icon-web.png
index 7e1c3f6..122bea1 100755
--- a/wearable/wear/XYZTouristAttractions/screenshots/icon-web.png
+++ b/wearable/wear/XYZTouristAttractions/screenshots/icon-web.png
Binary files differ
diff --git a/wearable/wear/XYZTouristAttractions/template-params.xml b/wearable/wear/XYZTouristAttractions/template-params.xml
index 81d3596..69a8c10 100644
--- a/wearable/wear/XYZTouristAttractions/template-params.xml
+++ b/wearable/wear/XYZTouristAttractions/template-params.xml
@@ -15,7 +15,7 @@
  limitations under the License.
 -->
 <sample>
-    <name>XYZ Tourist Attractions</name>
+    <name>XYZTouristAttractions</name>
     <group>Wearable</group>
     <package>com.example.android.xyztouristattractions</package>
     <minSdk>18</minSdk>
@@ -25,12 +25,10 @@
     </wearable>
 
     <dependency>com.android.support:appcompat-v7:21.0.3</dependency>
-    <dependency>com.google.android.gms:play-services-wearable:6.5.+</dependency>
     <dependency>com.google.android.gms:play-services-location:6.5.+</dependency>
     <dependency>com.google.maps.android:android-maps-utils:0.3.2</dependency>
-    <dependency>com.github.bumptech.glide:glide:3.5.1</dependency>
+    <dependency>com.github.bumptech.glide:glide:3.5.2</dependency>
     <dependency>com.android.support:recyclerview-v7:21.0.0</dependency>
-    <dependency_wearable>com.google.android.gms:play-services-wearable:6.5.+</dependency_wearable>
     <dependency_wearable>com.google.android.gms:play-services-location:6.5.+</dependency_wearable>
     <dependency_wearable>com.google.android.support:wearable:1.1.0</dependency_wearable>
     <dependency_shared>com.google.android.gms:play-services-wearable:6.5.+</dependency_shared>
@@ -39,20 +37,20 @@
 
     <strings>
         <intro>
-            <![CDATA[
-            This sample aims to be as close to a real world example of a mobile
-            and Wear app combination as possible. It has a more refined design
-            and also provides a practical example of how a mobile app would
-            interact and communicate with its wear counterpart.
+<![CDATA[
+This sample aims to be as close to a real world example of a mobile
+and Wear app combination as possible. It has a more refined design
+and also provides a practical example of how a mobile app would
+interact and communicate with its wear counterpart.
 
-            The app itself is modeled after a hypothetical tourist attractions
-            app that notifies the user when they are in close proximity to
-            notable points of interest.
+The app itself is modeled after a hypothetical tourist attractions
+app that notifies the user when they are in close proximity to
+notable points of interest.
 
-            The Wear component loads a full wearable app that shows images,
-            summary information and provides quick actions for nearby tourist
-            attractions in a GridViewPager UI component.
-            ]]>
+The Wear component loads a full wearable app that shows images,
+summary information and provides quick actions for nearby tourist
+attractions in a GridViewPager UI component.
+]]>
         </intro>
     </strings>
 
@@ -106,19 +104,19 @@
             Avoid simply rearranging the sample's title. What does this sample actually
             accomplish, and how does it do it? -->
         <description>
-            This sample aims to be as close to a real world example of a mobile
-            and Wear app combination as possible. It has a more refined design
-            and also provides a practical example of how a mobile app would
-            interact and communicate with its wear counterpart.
+This sample aims to be as close to a real world example of a mobile
+and Wear app combination as possible. It has a more refined design
+and also provides a practical example of how a mobile app would
+interact and communicate with its wear counterpart.
 
-            The app itself is modeled after a hypothetical tourist attractions
-            app that notifies the user when they are in close proximity to
-            notable points of interest.
+The app itself is modeled after a hypothetical tourist attractions
+app that notifies the user when they are in close proximity to
+notable points of interest.
 
-            The Wear component shows tourist attraction images and summary
-            information, and provides quick actions for nearby tourist
-            attractions in a [GridViewPager](http://developer.android.com/reference/android/support/wearable/view/GridViewPager.html)
-            UI component.
+The Wear component shows tourist attraction images and summary
+information, and provides quick actions for nearby tourist
+attractions in a [GridViewPager](http://developer.android.com/reference/android/support/wearable/view/GridViewPager.html)
+UI component.
         </description>
 
         <!-- Multi-paragraph introduction to sample, from an educational point-of-view.
@@ -126,15 +124,18 @@
         sample on DAC. -->
         <intro>
 <![CDATA[
-Getting started with this sample:
-* Compile and install the mobile app onto your handset or emulator
-* Compile and install the wearable app onto your Wear device or emulator
+Steps for trying out this sample:
+* Compile and install the mobile app onto your mobile device or emulator.
+* Compile and install the wearable app onto your Wear device or emulator.
 (**Note:** wearable apps are not automatically pushed from your mobile device
-unless you build a production release, see [here][22] for more info)
+unless you build a production release, see [here][22] for more info).
 * Start the mobile app and use the overflow menu options to test either a
-notification enhanced for Wear, or the full Wearable application (unless
+notification enhanced for Wear, or the full wearable application (unless
 you're physically in Sydney in which case the geofence should trigger
-automatically)
+automatically). Note that the first time you trigger either the notification
+or the wearable app it may take 20-30 seconds to show up as it needs to
+transfer the image assets to the wearable (in practice this delay won't be
+noticeable to users as they will only be notified once the data has been sent).
 
 This sample aims to demonstrate a number of different Android APIs and concepts
 relating to [Android Wear][1] and location using [Google Play Services][2]:
